通过使用我发现的 DrawerLayout,如果没有单击 View,则不会自行处理对 Drawer View 的单击。抽屉的内容视图将处理该点击事件。
更具体地说:DrawerLayout 有 2 个子项,即 Content View 和 Drawer View,可以从侧面拉出。
我的内容视图是一个 ListView,我的抽屉视图是一个包含 Edittext 的 LinearLayout。抽屉视图设置为填充整个视图。现在单击空白抽屉视图,因此不单击 EditText,将外展到底层内容视图,并且将单击我的 ListView 的一个项目。
防止这种情况的最佳方法是什么?
目前我有这个:
LinearLayout drawerView = (LinearLayout)findViewById(R.id.input_drawer);
drawerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do nothing just catch the click
}
});
LinearLayout 是我在 XML 中定义的 Drawer View 的 ViewGroup。因为DrawerListener没有点击事件的回调,所以我尝试了这个,它可以防止点击底层 ListView。但这感觉不太好。
更新:
我怎么说,DrawerView 中的 LinearLayout 高度设置为“match_parent”以填充整个 Drawer View。如果我将高度设置为“wrap_content”,则抽屉视图将不会从上显示边框设置到下边框,这非常难看。因此,抽屉视图未定义为设置整个屏幕高度。
话虽如此,ViewGroup(LinearLayout)负责抽屉视图的高度。如果 ViewGroup 中没有 View 被点击,Drawer View 本身根本没有监听器来捕捉点击。所以在这种情况下,我尝试为 ViewGroup 定义一个 onClickListener 是防止点击底层内容视图的唯一方法。
如果我错了,因为我肯定会错过一些东西,请纠正我。