通过使用我发现的DrawerLayout,如果没有单击View,则单击Drawer View不会自行处理。抽屉的内容视图将处理该被点击事件。
更具体一点: DrawerLayout有2个子项内容视图和抽屉视图,可以从侧面拉出。
我的内容视图是一个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是抽屉视图的ViewGroup,它以XML格式定义。因为DrawerListener没有针对点击事件的回调,所以我尝试了这个,它可以防止点击底层ListView。但这感觉不太好。
更新:
我怎么说,DrawerView中的LinearLayout高度设置为“match_parent”以填充整个抽屉视图。如果我将高度设置为“wrap_content”,抽屉视图将不会从上部显示边界设置到下边界,这非常难看。因此,未定义抽屉视图来设置整个屏幕高度。
据说,ViewGroup(LinearLayout)负责抽屉视图的高度。如果没有单击ViewGroup中的View,则Drawer View本身根本没有Listener来捕获点击。因此,在这种情况下,我尝试为ViewGroup定义onClickListener是阻止点击内置视图的唯一方法。
如果我错了,因为我肯定会错过一些东西,请纠正我。