jas*_*son 37 android facebook navigation-drawer
我已经实现了从右侧滑动的drawerlayout,但它并没有像facebook那样改变活动(见下图).当用户点击上面的图像中的opendrawer按钮时,如何将当前活动推到右侧.目前它出现在活动之上并且掉落阴影.我非常感谢任何帮助.提前致谢.
小智 68
虽然没有默认方式将活动与导航抽屉一起滑动,但我们可以通过代码完成.正如上面mick88的回答所示,以下是我项目的代码片段.
我的profile.xml文件
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:facebook="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- Framelayout to display Fragments -->
<RelativeLayout
android:id="@+id/mainView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</RelativeLayout>
<!-- Listview to display slider menu -->
<RelativeLayout
android:id="@+id/drawerView"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_gravity="start" >
<ListView
android:id="@+id/list_slidermenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/list_background"
android:divider="@color/list_divider"
android:dividerHeight="1dp" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
现在在活动中
public class ProfileActivity extends ActionBarActivity {
....
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
RelativeLayout drawerView;
RelativeLayout mainView;
....
@Override
protected void onCreate(Bundle savedInstanceState) {
............. //
.............//
drawerView = (RelativeLayout) findViewById(R.id.drawerView);
mainView = (RelativeLayout) findViewById(R.id.mainView);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) {
public void onDrawerClosed(View view) {
supportInvalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
supportInvalidateOptionsMenu();
}
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
mainView.setTranslationX(slideOffset * drawerView.getWidth());
mDrawerLayout.bringChildToFront(drawerView);
mDrawerLayout.requestLayout();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
}
Run Code Online (Sandbox Code Playgroud)
mic*_*k88 26
建议不要这样做,但您可以通过编程方式移动布局:
@Override
public void onDrawerSlide(View drawerView, float offset) {
View container = findViewById(R.id.container);
container.setTranslationX(offset * drawerView.getWidth());
}
Run Code Online (Sandbox Code Playgroud)
回答你的问题.DrawerLayout的行为符合预期.
你可以将Slidingmenu(或Umano)与DrawerLayout(我这样做)结合使用.
最后,关于你想要什么(以及Facebook做什么),谷歌本身并不希望你这样做.他们希望您像在Google音乐中一样使用抽屉(例如)
谷歌联系人对我说:
所以不要做Facebook所做的事情.(在任何其他情况下,这是一个很好的建议):)
小智 7
这真的很有帮助.将此代码段放在MainActivity.java中
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
containerFrame.setTranslationX(slideOffset * drawerView.getWidth());
drawerLayout.bringChildToFront(drawerView);
drawerLayout.requestLayout();
//below line used to remove shadow of drawer
drawerLayout.setScrimColor(Color.TRANSPARENT);
}//this method helps you to aside menu drawer
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25734 次 |
最近记录: |