構建Android應用程序的用戶界面有點奇怪。儘管我必須解決這個錯誤,但我不知道原因,我想了解爲什麼會發生這種情況,以便了解有關Android的更多信息。我再現場景的簡單應用:如果調用setListAdapter,則不會出現列表頁腳視圖
創建一個新的Hello World Android應用程序添加下資源這個資源文件/佈局/ footer_view.xml:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Foo Bar" />
並使用此活動:
public class MainActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(android.R.layout.list_content);
ListAdapter adapter = new ArrayAdapter(this, android.R.layout.activity_list_item);
setListAdapter(adapter);
View footer = LayoutInflater.from(this).inflate(R.layout.footer_view, getListView(), false);
getListView().addFooterView(footer);
}
}
我們得到如下畫面:
令我驚訝的是,我看到一個名爲「Foo Bar」的TextView的頁腳視圖丟失了。在玩了一段時間之後,我發現解決方案是移動「setListAdapter(adapter);」行添加到onCreate()方法的結尾,或者在將頁腳添加到視圖後以不同的方式表示。
探索一點進一步我發現問題是寬度,這是0,如果我有適配器之前添加。另一個解決方案是指明一個明確的寬度,而不是match_parent。
任何線索爲什麼發生這種情況?對我來說,如果因爲列表可能沒有準備好而沒有添加適配器,它會變得更直觀,但是如果一切都準備好了,爲什麼它不工作?