definierte xml-layout-in-layout-land erscheint nicht in android-Anwendung
Bin ich eine Anwendung entwickeln, die nach dieses Beispiel. Definierte ich ein Querformat-layout für header.xml in einem layout-land", aber wenn ich ändern Sie die Ausrichtung zu Querformat, definierte layout wird nicht auf dem Bildschirm erscheinen.
Wissen, Warum ?
Dank
Aktualisiert :
Tätigkeit Code :
public class ACENewsFeedActivity extends ListActivity {
//Progress Dialog
private ProgressDialog pDialog;
//Array list for list view
ArrayList<HashMap<String, String>> rssItemList = new ArrayList<HashMap<String,String>>();
RSSParser rssParser = new RSSParser();
List<RSSItem> rssItems = new ArrayList<RSSItem>();
RssFeed rssFeed;
private static String TAG_TITLE = "title";
private static String TAG_LINK = "link";
private static String TAG_DESRIPTION = "description";
private static String TAG_PUB_DATE = "pubDate";
//private static String TAG_GUID = "guid"; //not used
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rss_item_list);
/**
* Calling a backgroung thread will loads recent articles of a website
* @param rss url of website
* */
new loadRSSFeedItems().execute();
}
....
}
XMl-Layout im landscape-Modus :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layoutHeader"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:layout_alignParentTop="true"
android:background="@layout/header_gradient"
android:orientation="horizontal">
<!-- Logo -->
<!-- Refresh -->
<!-- Plus Button -->
<ImageButton
android:id="@+id/btnAddSite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="5dip"
android:background="@null"
android:src="@drawable/plus"
android:layout_centerVertical="true" />
<ImageView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:src="@drawable/logo" />
<ImageView
android:id="@+id/refreshList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:src="@drawable/refresh" />
</RelativeLayout>
- Können Sie nach dem code für die xml-und die Aktivität?
- Verstehe ich richtig, dass Sie layouts in beiden layout-port und layout-Ordner landen, und das Lay-out-port ist die Ansicht in hochformat aber die layout-land zeigt nicht im Querformat?
- Nein, habe ich nicht land-Hafen-Ordner, den ich erstellt layout-land neben layout (Standard-Ordner) enthalten Querformat-version von header.xml Datei. Bin Ich Im Recht ?
- überprüfen Sie heraus diesen link developer.android.com/guide/topics/resources/...
- Ja, beim Umschalten auf Querformat sollte geprüft werden, ob
res/layout-land
für eine header.xml und verwenden, wenn es vorhanden ist, bevor mit der man inres/layout
. Allerdings, wenn Sie setzen eine inres/layout-land
Sie können auch die anderen inres/layout-port
da sind nur zwei Optionen für die Ausrichtung des Bildschirms. Dies wird definitiv auch verhindern, dass der inres/layout-port
verwendet werden, die im Querformat (so kann es sein nützlich für debugging-Zwecke).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Android ermöglicht es Ihnen, verschiedene Versionen von Ressourcen-Dateien zur Unterstützung von spezifischen Geräte-Konfigurationen, Bildschirm-Größe/Auflösung und (wie Sie versuchen zu tun) die Lage des Gerätes. Bei android ist das laden einer layout-Datei wird zuerst in der
res/layout-port
Ordner (wenn es im Querformat) oder in derres/layout-land
Ordner (wenn es im Querformat). Wenn es nicht die Datei gefunden wird, dann suchen Sie in der regulärenres/layout
Ordner.Zusätzlich, wie bereits hier, wenn bestimmte Gerätekonfigurationen ändern (wie die Lage des Gerätes) während der Laufzeit wird android neu starten, was auch immer Prozess zurzeit ausgeführt wird durch speichern des Status, es zu zerstören, und dann starten Sie es mit dem gespeicherten Zustand info. Dies ermöglicht es, laden Sie die layout-Dateien wieder, und es wird Aussehen Sie den Ordner für die neue Orientierung, wenn er versucht, Sie zu laden.
So, wenn Sie beginnen, Ihre Anwendung im hoch-es wird laden Sie die Datei in
res/layout-port
oderres/layout
. Wenn Sie dann drehen Sie das Gerät ins Querformat, es werden zerstören, Ihr Prozess und starten Sie neu. Dieses mal jedoch wird es in der Landschaft, so wird es prüfenres/layout-land
stattdessen für die layout-Dateien.Wenn Sie Ihre Dateien auf diese Weise eingerichtet aber es funktioniert nicht wie Sie denken, es sollte, würde ich zuerst überprüfen, dass es definitiv nicht die richtigen Dateien durch das setzen von zwei verschiedenen
header.xml
Dateien in derlayout-land
undlayout-port
Ordner, vielleicht eines mit einem roten hintergrund und einer mit einem grünen hintergrund. Stellen Sie sicher, überprüfen Sie die Datei, die Referenzen und vielleicht mit Toast post einige debug-Informationen auf dem Bildschirm, um sicherzustellen, dass es ist das aufblasen-layouts richtig.Ist das Standardverhalten für android zu behandeln, die änderung der Ausrichtung (das heißt Sie zu zerstören Ihre Aktivität und die Schaffung einer neuen Instanz, die alle neu laden-layout-Dateien). Dieses Standardverhalten wird immer auftreten, wenn Ihre Aktivitäten-tag in Ihrer manifest-Datei enthält die Eigenschaft android:configChanges="orientation". (Dieser tag kann Argumente anderer als Orientierung für android mit der config die änderungen für alle Ereignisse außer denen, übergeben Sie als Argumente zu diesem tag.)
Wenn Sie die
android:configChanges="orientation"
tag, das Sie sagen android NICHT zu zerstören Ihre Aktivität und NICHT, um neu zu laden-layout-Dateien, wenn die Ausrichtung des Geräts ändert. Statt dessen Standardverhalten es wird eine Methode aufrufen (die Sie definieren), können Sie änderungen, die Sie vornehmen wollen, behandeln Sie die Ausrichtung ändern, sich selbst anstatt android handle es automatisch. Es ist bestimmt so, dass, wenn Sie zu zerstören Ihre Aktivitäten wäre ein großer Nachteil, das es nicht automatisch zerstört.EDIT: Hinzugefügt einige Dinge aus der Kommentar-Diskussion
res/layout
Ordner?android:configChanges="orientation"
. Ich kenne nichts anderes, das kann dazu führen, das default-Verhalten nicht ausführen, auf eine Ausrichtung zu ändern. Ich bin mir nicht sicher, was das Problem verursacht.android:configChanges=
tag?android:configChanges="orientation"
sollten Sie definieren
android:configChanges="orientation"
immanifest
- Datei für die Aktivität und überschreiben Sie dieonConfigChanged()
Methode, dasssetContentView()
Etwa so: