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);