Sin*_*zak 8 android listview gravity drawerlayout
我使用DrawerLayout,最近我想在drawerLayout中改变listView的重力.但是在我将listView的重力改为android:layout_gravity="start|bottom"from后android:layout_gravity="start",drawerLayout无法锁定
mDrawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
Run Code Online (Sandbox Code Playgroud)
setDrawerLockMode()使用;
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
</RelativeLayout>
<ListView
android:id="@+id/drawer_list"
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#F3F3F4"
android:choiceMode="singleChoice" >
</ListView>
Run Code Online (Sandbox Code Playgroud)
但它没有锁定;
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
</RelativeLayout>
<ListView
android:id="@+id/drawer_list"
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="start|bottom"
android:background="#F3F3F4"
android:choiceMode="singleChoice" >
</ListView>
Run Code Online (Sandbox Code Playgroud)
`
任何线索为什么我不能使用其他重力的锁模式?
谢谢!
A--*_*--C 19
基于对文档中,只可以使用可用的比重是Gravity.LEFT,Gravity.RIGHT或者GravityCompat.START,GravityCompat.END.
(强调我的):
使用子视图上的android:layout_gravity属性控制抽屉定位和布局,该属性对应于您希望抽屉出现的视图的哪一侧:左侧或右侧.(或者在支持布局方向的平台版本上开始/结束.)
看源代码
public void setDrawerLockMode(int lockMode, int edgeGravity) {
final int absGrav = GravityCompat.getAbsoluteGravity(edgeGravity,
ViewCompat.getLayoutDirection(this));
if (absGrav == Gravity.LEFT) {
mLockModeLeft = lockMode;
} else if (absGrav == Gravity.RIGHT) {
mLockModeRight = lockMode;
}
if (lockMode != LOCK_MODE_UNLOCKED) {
// Cancel interaction in progress
final ViewDragHelper helper = absGrav == Gravity.LEFT ? mLeftDragger : mRightDragger;
helper.cancel();
}
switch (lockMode) {
case LOCK_MODE_LOCKED_OPEN:
final View toOpen = findDrawerWithGravity(absGrav);
if (toOpen != null) {
openDrawer(toOpen);
}
break;
case LOCK_MODE_LOCKED_CLOSED:
final View toClose = findDrawerWithGravity(absGrav);
if (toClose != null) {
closeDrawer(toClose);
}
break;
// default: do nothing
}
}
Run Code Online (Sandbox Code Playgroud)
该方法本身仅在重力是检查LEFT或RIGHT(但使用GravityCompat的方法,所以START与END应适当翻译).
这意味着通过设置引力"start|bottom",你引入了无效的引力,这导致setDrawerLockMode()什么都不做.
| 归档时间: |
|
| 查看次数: |
9314 次 |
| 最近记录: |