从DrawerLayout格式从右到左滑动ExpandableListView

use*_*714 8 android android-layout

如何从DrawerLayout格式从右到左滑动ExpandableListView

我想在屏幕的右下角显示ExpandableListView,我该怎么做?

<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">

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

    <ExpandableListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@android:color/white"
        android:dividerHeight="0dp"
      />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

Kar*_*uri 23

更改android:layout_gravity="start"android:layout_gravity="end"android:layout_gravity="right"(使用end将抽屉放在屏幕左侧以进行从右到左的配置)

编辑

看起来ActionBarDrawerToggle正在寻找与操作栏Home图标(Gravity.START)相同的一侧的抽屉,这将是从左到右布局方向的左侧.如果你总是把抽屉放在右边,你可以这样做:

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer, R.drawable.ic_drawer, R.string.open_drawer, R.string.close_drawer) {

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item != null && item.getItemId() == android.R.id.home) {
            if (mDrawer.isDrawerOpen(Gravity.RIGHT)) {
                mDrawer.closeDrawer(Gravity.RIGHT);
            } else {
                mDrawer.openDrawer(Gravity.RIGHT);
            }
        }
        return false;
    }
};
Run Code Online (Sandbox Code Playgroud)

如果抽屉始终与操作栏主页图标相对,则可以Gravity.END改为使用.

  • 07-23 14:40:18.200:E/AndroidRuntime(20593):致命异常:主07-23 14:40:18.200:E/AndroidRuntime(20593):java.lang.IllegalArgumentException:没有找到绝对重力的抽屉视图LEFT 07-23 14:40:18.200:E/AndroidRuntime(20593):在android.support.v4.widget.DrawerLayout.openDrawer(DrawerLayout.java:1000)07-23 14:40:18.200:E/AndroidRuntime(20593) :at android.support.v4.app.ActionBarDrawerToggle.onOptionsItemSelected(ActionBarDrawerToggle.java:248) (2认同)

小智 5

我有同样的问题,因为我的应用程序是阿拉伯语,必须从右边开始.

在这里测试了所有解决方案后,我发现最好的是:

  • 在清单中添加此行: android:supportsRtl="true"
  • 在您的活动中添加以下代码: getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
  • 在你的列表视图中不要使用:android:layout_gravity="right" 因为如果你使用正确,你会在更多的Android版本4.0.4中得到错误

解决方案是使用:android:layout_gravity="start",因为在这种情况下,listview遵循页面的重力.