android - 使用带 Fragment 的 DrawerLayout 时设置 ListView 的 LayoutParams

标签 android listview layoutparams drawerlayout

我想更改位于 DrawerLayout 中的 Listview 的宽度和高度:

DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
DrawerLayout.LayoutParams myParam = new DrawerLayout.LayoutParams(20, 20);
mDrawerList.setLayoutParams(myParam);

但是我得到这个错误:

06-21 09:30:57.361: E/AndroidRuntime(12583): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jk.demo/com.jk.demo.MemoStart}:
  java.lang.IllegalArgumentException: View android.widget.ListView{414506a8 VFED.VC. ......I. 0,0-0,0 #7f04003a app:id/left_drawer} is not a sliding drawer

drawer_main.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" >

<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="540dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#111"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp" />

我导入了:

import android.support.v4.widget.DrawerLayout;
import android.support.v4.widget.DrawerLayout.LayoutParams;

有什么解决办法吗?

最佳答案

无需创建新的 layoutParam 对象,您可以像这样设置 ListView 的宽度/高度

mDrawerList.getLayoutParams().width = 20;
mDrawerList.getLayoutParams().height = 20;

请注意,20 以像素为单位。如果你想设置(通常)在dp值,那么你需要做一些转换

int widthDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, getResources().getDisplayMetrics());
int heightDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, getResources().getDisplayMetrics());
mDrawerList.getLayoutParams().width = widthDp;
mDrawerList.getLayoutParams().height = heightDp;

关于android - 使用带 Fragment 的 DrawerLayout 时设置 ListView 的 LayoutParams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17231120/

相关文章:

java - 无法进一步更改属性 'resValues' 的值。将 gradle 从 4.1.3 升级到 4.2.1 后

Android,ListView IllegalStateException : "The content of the adapter has changed but ListView did not receive a notification"

java - 膨胀线性布局时填充父 View 的问题

Android - 如何在 GridLayout 中为自定义 LinearLayouts 设置边距?

android - 单击列表项时,图像在 ListView 中交换它们的行

java - 如何在共享首选项中分配唯一的字符串值

listview - 拖动时热轨在虚拟 TListView 中不起作用

java - Android - 将值从 ListFragment 传递到另一个 ListFragment

Android通过java代码prob将wrap_content设置为ImageView

java - 如何检查 ImageView 是否有从 Android Studio 中的图库上传的图像?