为了清楚起见,我们在这里讨论的是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都会消失。
我在尝试解决这个问题时已经注意到了一些事情:
我很确定这与显示空视图和/或显示时发生的任何布局更改有关。如果我没有为ListFragment设置空视图,则不会发生此问题。
我也很确定这些效果与SlidingDrawer旋转180度这一事实有关,因为如果我删除了旋转属性,问题也不会发生。但是,由于SlidingDrawer在其默认状态下仅从右向左打开,因此此抽屉应用XML属性android:rotation =“180”来翻转视图,以便可以从左向右打开。这必须保留,因为屏幕右侧还有其他东西无法移动。
我不确定是什么让视图消失或从哪里开始修复它。我试图通过覆盖onMeasure,onSizeChanged和onLayout来修复子视图的大小,但找不到任何解决问题的方法。
任何想法都表示赞赏。