gpt4 book ai didi

android - 如何使用抽屉布局左侧移动主要内容

转载 作者:IT老高 更新时间:2023-10-28 13:22:07 24 4
gpt4 key购买 nike

刚刚查看了如何使用 DrawerLayout 制作菜单 here .但是左侧菜单在主要内容的前面移动。如何将其设置为菜单和主要内容并排移动(菜单将内容推送到右侧)?

最佳答案

如果您不想使用第三方库,您可以自己实现它,只需覆盖 ActionBarDrawerToggle 中的 onDrawerSlide。在那里,您可以根据抽屉的打开百分比来翻译框架布局 View 。

代码示例:

<?xml version="1.0" encoding="utf-8"?>
<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"/>

<ListView 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/transparent"
android:dividerHeight="0dp"/>

</android.support.v4.widget.DrawerLayout>

在这里,覆盖 onDrawerSlide:

public class ConfigurerActivity extends ActionBarActivity 
{
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
private FrameLayout frame;
private float lastTranslate = 0.0f;

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
frame = (FrameLayout) findViewById(R.id.content_frame);

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.acc_drawer_open, R.string.acc_drawer_close)
{
@SuppressLint("NewApi")
public void onDrawerSlide(View drawerView, float slideOffset)
{
super.onDrawerSlide(drawerView, slideOffset);
float moveFactor = (mDrawerList.getWidth() * slideOffset);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
frame.setTranslationX(moveFactor);
}
else
{
TranslateAnimation anim = new TranslateAnimation(lastTranslate, moveFactor, 0.0f, 0.0f);
anim.setDuration(0);
anim.setFillAfter(true);
frame.startAnimation(anim);

lastTranslate = moveFactor;
}
}
};

mDrawerLayout.setDrawerListener(mDrawerToggle);

// ... more of your code
}
}

由于 setTranslationX 在 pre-honeycomb android 版本中不可用,我使用 TranslateAnimation 来管理低版本设备。

希望对你有帮助!

关于android - 如何使用抽屉布局左侧移动主要内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20057084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com