我在玩DrawerLayout,我遇到了一个问题。基本上有时候,当我从屏幕边缘滑动时,DrawerLayout会卡住,直到我把手指从屏幕上移开(见下面的截图)。
我不确定是怎么回事,我完全按照google sdk中的代码示例进行了操作。有什么想法吗?
这是我的FragmentActivity中唯一的东西:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String[] names =
getResources().getStringArray(R.array.nav_names);
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(
getActionBar().getThemedContext(),
android.R.layout.simple_list_item_1, names);
final DrawerLayout drawer =
(DrawerLayout)findViewById(R.id.drawer_layout);
final ListView navList =
(ListView) findViewById(R.id.drawer);
navList.setAdapter(adapter);
navList.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent,
View view, final int pos, long id)
{
drawer.setDrawerListener(
new DrawerLayout.SimpleDrawerListener()
{
@Override
public void onDrawerClosed(View drawerView)
{
super.onDrawerClosed(drawerView);
}
});
drawer.closeDrawer(navList);
}
});
}
编辑:我在这方面添加了一个赏金,因为这是一个非常老的问题,即使在最新的Android-X (示例可用)的今天仍然存在。下面是它的外观:
我已经向谷歌(和后来的)报告了这件事,但它没有帮助。
我已经在这个线程上尝试了所有现有的解决方案,但都没有奏效。如果有人对此有很好的解决方法(同时仍在使用DrawerLayout或扩展它,或类似的东西),请提出一个有效的解决方案。
发布于 2013-11-16 15:45:24
请注意,您可以通过在DrawerLayout中的FrameLayout上将clickable属性设置为true来绕过这个20dp的窥视功能。
android:clickable="true“
例如:http://developer.android.com/training/implementing-navigation/nav-drawer.html
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
<!-- The navigation drawer -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/darker_gray"
android:dividerHeight="1dp" />
</android.support.v4.widget.DrawerLayout>
发布于 2015-09-02 22:22:03
如果您向我们展示了您的布局xml,我们就可以看到您是否将DrawerLayout作为根元素。以及里面的两个子项是否是主布局和导航抽屉。
若要添加导航抽屉,请使用DrawerLayout对象将用户界面声明为布局的根视图。在DrawerLayout中,添加一个包含屏幕主要内容的视图(隐藏抽屉时的主要布局)和另一个包含导航抽屉内容的视图。
发布于 2018-01-08 00:26:40
我已经设法通过实现这个DrawerListener来解决这个问题:
drawerLayout.addDrawerListener(new DrawerLayout.SimpleDrawerListener() {
@Override
public void onDrawerStateChanged(int newState) {
super.onDrawerStateChanged(newState);
if (drawerLayout.isDrawerVisible(Gravity.LEFT) && !drawerLayout.isDrawerOpen(Gravity.LEFT)) {
drawerLayout.closeDrawer(Gravity.LEFT);
}
}
});
每当状态改变时,如果抽屉可见但未打开,则意味着它正在“偷看”,因此我将其关闭。
https://stackoverflow.com/questions/18029874
复制相似问题