构建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。
任何线索为什么发生这种情况?对我来说,如果因为列表可能没有准备好而没有添加适配器,它会变得更直观,但是如果一切都准备好了,为什么它不工作?