android - SwipeRefreshLayout 只能托管一个直接子节点

标签 android xml setcontentview

我在我的 listView 中添加了一个“拉动刷新”,我还想在列表为空时添加一个空 View - 现在我收到了这个错误。我怎样才能使这项工作?如果我将 View 定位在 swipeRefresh 之外,然后将其添加为空 View ,它将起作用。那么我如何使用外部 xml 文件来实现它......?

xml代码:

        <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipeRefreshLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >


        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:clipToPadding="false"
            android:paddingBottom="@dimen/inbox_vertical_margin" ></ListView>


</android.support.v4.widget.SwipeRefreshLayout>

在创建 View 时:

View rootView = inflater.inflate(R.layout.fragment_inbox, container,
        false);

View empty = inflater.inflate(R.layout.empty_message_list, container,
        false);
ListView mListView = (ListView) rootView
        .findViewById(android.R.id.list);
((ViewGroup) mListView.getParent()).addView(empty);
TextView textViewToChange = (TextView) empty
        .findViewById(R.id.welcomeMessage);

textViewToChange.setText("YO "
        + ParseUser.getCurrentUser().getString(
                ParseConstants.KEY_PRESENTING_USERNAME)
        + "!  bad news.. :(");
mListView.setEmptyView(empty);

mSwipeRefreshLayout = (SwipeRefreshLayout) rootView
        .findViewById(R.id.swipeRefreshLayout);
mSwipeRefreshLayout.setOnRefreshListener(mOnRefreshListener);
mSwipeRefreshLayout.setColorScheme(R.color.swipeRefresh1,
        R.color.swipeRefresh2, R.color.swipeRefresh3,
        R.color.swipeRefresh4);

return rootView;

最佳答案

SwipeRefreshLayout 应该是 XML 文件中的父级。

您可以使用 FrameLayout 作为 SwipeRefreshLayout 的子级。 ListViewTextView(或任何其他空状态 View )可以是 FrameLayout 的 subview 。

关于android - SwipeRefreshLayout 只能托管一个直接子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23830594/

相关文章:

xml - 如何打印出属性值而不是元素内容?

java - Android:如何从 Activity 类将多个值传递给 setContentView() 方法?

java - 如何在另一个方法中设置setContentView?

android - 在 Android 中解压文件

objective-c - 如何读取和解析 .xml 文件

android - 将项目永久添加到现有的警报对话框?

android - 嵌套的 XML 布局文件

android - 警报对话框生成器中的空指针异常

android - 通过应用内购买去除广告