Android ListView/ExpandableListView setEmptyView()无效
我正在尝试为三个列表视图设置空视图,即两个可展开视图和一个列表视图,它们位于不同的选项卡中:Android ListView/ExpandableListView setEmptyView()无效,android,listview,expandablelistview,Android,Listview,Expandablelistview,我正在尝试为三个列表视图设置空视图,即两个可展开视图和一个列表视图,它们位于不同的选项卡中: LayoutInflater inflater = getLayoutInflater(); View emptyView = inflater.inflate(R.layout.empty_view, null, false); ... ExpListView1.setEmptyView(emptyView); ListView.setEmptyView(emptyView); Exp
LayoutInflater inflater = getLayoutInflater();
View emptyView = inflater.inflate(R.layout.empty_view, null, false);
...
ExpListView1.setEmptyView(emptyView);
ListView.setEmptyView(emptyView);
ExpListView2.setEmptyView(emptyView);
它没有效果-空视图不会出现。与该代码段相同:
View emptyView = inflater.inflate(R.layout.empty_view, null, false);
View emptyRelativeLayout = (RelativeLayout) emptyView.findViewById(R.id.empty_view_layout);
ExpListView1.setEmptyView(emptyRelativeLayout);
空的\u视图\u layout.xml:
通过将空视图作为另一个内容视图添加到“我的活动”中,问题得以解决:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
inflater = getLayoutInflater();
emptyView = inflater.inflate(R.layout.empty_view, null);
addContentView(emptyView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
我是这样做的:
活动\u main.xml
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ExpandableListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/expListView">
</ExpandableListView>
<TextView
android:id="@+id/txtEmptyView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:padding="10dp"
android:text="@string/no_game_available"
android:textAppearance="@android:style/TextAppearance.Medium"
android:textColor="@android:color/white" />
</RelativeLayout>
希望这能对你有所帮助。UPD:当我尝试使用特定的@android:id/empty添加空文本视图时,它只对列表视图有效,而对可扩展视图无效。我刚刚了解了整个过程的工作原理,我想我会分享:列表(
android.R.id.list
)和空视图(android.R.id.empty
)必须作为contentView附加到活动,也可以通过将它们都放在setContentView
使用的布局xml文件中来实现,这样就不会膨胀。此外,如果他们具有上述ID,则无需调用setEmptyView
:请参阅。将它们放在同一个文件中的优点是,您可以自定义它们显示的位置和方式,最简单的方法是将它们都包装在FrameLayout
中。只有在ListActivity
中才能省略setEmptyView
。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ExpandableListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/expListView">
</ExpandableListView>
<TextView
android:id="@+id/txtEmptyView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:padding="10dp"
android:text="@string/no_game_available"
android:textAppearance="@android:style/TextAppearance.Medium"
android:textColor="@android:color/white" />
</RelativeLayout>
ExpandableListView expandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
TextView txtEmptyView = (TextView) view.findViewById(R.id.txtEmptyView);
expandableListView.setEmptyView(txtEmptyView);