Arm*_*ier 29 android android-layout navigation-drawer drawerlayout
我已成功为我的应用程序实现了NavigationDrawer.
我的应用程序显示在屏幕左侧打开的抽屉.
我的问题是我需要在左边添加一个按钮.可以单击或滑动该按钮以打开左侧抽屉.我能做到的.
但按钮应该看起来像抽屉的一部分会溢出到屏幕上.
这意味着当抽屉打开和关闭时,按钮应同时滑动.
关闭状态:

开放状态

我尝试将按钮添加到左侧抽屉的布局中,但似乎您无法使其显示在其边界之外,并且当您关闭它时,抽屉将始终完全隐藏.
现在我正在尝试添加它以向主DrawerLayout添加一个按钮并使其与左抽屉的右侧对齐...但没有运气......看起来像DrawerLayout不能有两个以上的孩子.. .
任何帮助将不胜感激.
我正在使用支持库(v4)
[编辑]我支持API级别8 ...所以不能使用ImageView.setTranslationX或View.OnAttachStateChangeListener
Nik*_*ski 12
这很棘手.
我认为这与新版Google地图应用中的抽屉手柄相似.不要相信我的话,不确定.:)
我写的切换位于Activity内容视图的边缘.当DrawerLayout拖动时,我将x轴上的视图转换为最小子项(DrawerLayout内容视图)减去阴影(如果有)的量.由于阴影铸造+内容视图DrawerLayout给出了整个抽屉的完整测量宽度.
我快速乘以滑动偏移和最小子,找到x平移.
[编辑:代码已被移除以提高可读性,并且已移至下面提供的链接]
在您的活动中:
mDrawerToggle = new DrawerLayoutEdgeToggle(
this,
mDrawerLayout,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
Gravity.LEFT,
true) {
@Override
public void onDrawerClosed(View view) {
super.onDrawerClosed(view); //must call super
}
@Override
public void onDrawerOpened(View view) {
super.onDrawerOpened(view); //must call super
}
@Override
public void onDrawerSlide(View view, float slideOffset) {
super.onDrawerSlide(view, slideOffset); //must call super
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
Run Code Online (Sandbox Code Playgroud)
创造力提升: 您可以添加更多的化妆品,例如ActionBar的距离,您可以将其设置为手柄的边距.
您也可以通过在Y轴上平移向左/向右上/下移动手柄来模仿"单拉链效果".:)
编辑:它可以在我的GitHub上找到
编辑2:对于那些无法获得句柄的人,只需使用即可mDrawerToggle.setVerticalPostionOffset(0)
由于Mobistry编写的Aniqroid库(SO伪),我找到了一种很容易做到这一点的方法
我使用SlidingTray类,它是android SlidingDrawer的副本,但允许您将抽屉定位到屏幕的任何角落.
我通过xml声明了元素
<com.sileria.android.view.SlidingTray
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="270dp"
android:content="@+id/content"
android:handle="@+id/handle" >
<ImageView
android:id="@+id/handle"
android:layout_width="320dp"
android:layout_height="24dp"
android:background="@drawable/tray_btn" />
<LinearLayout
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="fill_vertical"
android:orientation="vertical" >
</LinearLayout>
</com.sileria.android.view.SlidingTray>
Run Code Online (Sandbox Code Playgroud)
而且只需要打电话
Kit.init(this);
Run Code Online (Sandbox Code Playgroud)
在Activity膨胀布局之前在我的主要部分.
我感谢aniqroid开发者!
https://code.google.com/p/aniqroid/
| 归档时间: |
|
| 查看次数: |
12854 次 |
| 最近记录: |