Android 安卓移动主要内容至抽屉右侧
我想创建一个导航抽屉效果,但不是抽屉从右边滑出。我创建了代码,当我的幻灯片菜单位于左侧时,我的代码工作正常。这是我的java代码Android 安卓移动主要内容至抽屉右侧,android,android-animation,navigation-drawer,android-navigationview,Android,Android Animation,Navigation Drawer,Android Navigationview,我想创建一个导航抽屉效果,但不是抽屉从右边滑出。我创建了代码,当我的幻灯片菜单位于左侧时,我的代码工作正常。这是我的java代码 DrawerLayout drawerLayout; View drawerView; View drawerContent; View mainContent; ActionBarDrawerToggle toggle; @Override protected void onCreate(Bundle savedInstanceState) { super.
DrawerLayout drawerLayout;
View drawerView;
View drawerContent;
View mainContent;
ActionBarDrawerToggle toggle;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerView = findViewById(R.id.drawer_view);
drawerContent = findViewById(R.id.drawer_content);
mainContent = findViewById(R.id.main_content);
toggle = new ActionBarDrawerToggle(
TestLayout.this,
drawerLayout,
R.drawable.ic_drawer,
R.string.u_drawer_call_center,
R.string.u_drawer_call_center
) {
@Override
public void onDrawerSlide(View drawer, float slideOffset)
{
super.onDrawerSlide(drawer, slideOffset);
drawerContent.setX(drawerView.getWidth() * (1 - slideOffset));
mainContent.setX(drawerView.getWidth() * slideOffset);
}
public void onDrawerClosed(View view) {
}
public void onDrawerOpened(View drawerView) {
}
};
drawerLayout.setDrawerListener(toggle);
drawerLayout.closeDrawer(drawerView);
drawerContent.setX(drawerView.getWidth());
}
}
正如我所说,当幻灯片菜单位于左侧时,我可以移动主要内容。但现在我希望幻灯片菜单位于右侧。我重写了xml代码,但无法移动主要内容
这是我的xml代码
<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"
android:background="#000000">
<FrameLayout android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cccccc" />
<LinearLayout android:id="@+id/drawer_view"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="right">
<LinearLayout android:id="@+id/drawer_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher" />
</LinearLayout>
</LinearLayout>
但这个代码不起作用。我不知道如何使用我的代码,当我有幻灯片菜单右侧。
如果有人知道答案,请帮助我
谢谢大家除了更改
抽屉视图
上的布局之外
如您所做的,所需的更改很小。在中,对每次出现的drawerView.getWidth()
求反。即:
toggle = new ActionBarDrawerToggle(...) {
...
@Override
public void onDrawerSlide(View drawer, float slideOffset) {
super.onDrawerSlide(drawer, slideOffset);
drawerContent.setX(-drawerView.getWidth() * (1 - slideOffset));
mainContent.setX(-drawerView.getWidth() * slideOffset);
...
}
};
...
drawerContent.setX(-drawerView.getWidth());
然后,您需要覆盖MainActivity
的onOptionsItemSelected()
方法,如下所示:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
if(drawerLayout.isDrawerOpen(Gravity.END)) {
drawerLayout.closeDrawer(Gravity.END);
}
else {
drawerLayout.openDrawer(Gravity.END);
}
return true;
}
...
return super.onOptionsItemSelected(item);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
if(drawerLayout.isDrawerOpen(Gravity.END)) {
drawerLayout.closeDrawer(Gravity.END);
}
else {
drawerLayout.openDrawer(Gravity.END);
}
return true;
}
...
return super.onOptionsItemSelected(item);
}