过滤

时间:2015-12-29 21:28:05

标签: android android-layout listview android-listfragment slidingdrawer

为了清楚起见,我们在这里讨论的是XML旋转视图,而不是旋转设备的效果。我有一个包含ListFragment的SlidingDrawer。 ListFragment实现Filterable接口,以便用户可以通过EditText提供字符串输入来搜索其内容。

相关布局如下。因为在API 17中不推荐使用SlidingDrawer类,所以源代码是通过本地类访问的。这就是为什么该视图的名称看起来像一个自定义类,而实际上它不是。

<com.example.echo.views.SlidingDrawer 
        android:id="@+id/left_sliding_drawer"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:handle="@+id/left_handle"
        android:orientation="horizontal"
        android:content="@+id/people_fragment_container"
        android:rotation="180">

        <LinearLayout 
            android:id="@id/left_handle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/people_tab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/people_map_tab_grey"
                android:rotation="180"
                android:contentDescription="@string/people_tab"/>

        </LinearLayout>

        <FrameLayout 
            android:id="@+id/people_fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

    </com.example.echo.views.SlidingDrawer>

当用户提供输入并过滤列表以使得没有匹配结果时,即ListView为空且大小为0时,整个SlidingDrawer都会消失。

我在尝试解决这个问题时已经注意到了一些事情:

我很确定这与显示空视图和/或显示时发生的任何布局更改有关。如果我没有为Lis​​tFragment设置空视图,则不会发生此问题。

我也很确定这些效果与SlidingDrawer旋转180度这一事实有关,因为如果我删除了旋转属性,问题也不会发生。但是,由于SlidingDrawer在其默认状态下仅从右向左打开,因此此抽屉应用XML属性android:rotation =“180”来翻转视图,以便可以从左向右打开。这必须保留,因为屏幕右侧还有其他东西无法移动。

我不确定是什么让视图消失或从哪里开始修复它。我试图通过覆盖onMeasure,onSizeChanged和onLayout来修复子视图的大小,但找不到任何解决问题的方法。

任何想法都表示赞赏。

0 个答案:

没有答案