我想打开所有不同设备的屏幕一半的抽屉列表.我尝试将layout_margineleft 200dp或100dp的硬编码值写入抽屉列表.但它不适用于所有不同设备的设备.那么如何才能为抽屉列表保留一半的屏幕.我也尝试了各种功能,如setLeft(int)等.但由于我使用的是最低版本8,因此其中一些功能不起作用.所以请帮助我.提前致谢.
mDrawerLayout = (DrawerLayout) view.findViewById(R.id.drawer_layout); mDrawerList = (ListView) view.findViewById(R.id.top_sectionlist);
xml为:
Gopal Gopi.. 70
动态设置ListView的宽度...
mDrawerLayout = (DrawerLayout) view.findViewById(R.id.drawer_layout); mDrawerList = (ListView) view.findViewById(R.id.top_sectionlist); int width = getResources().getDisplayMetrics().widthPixels/2; DrawerLayout.LayoutParams params = (android.support.v4.widget.DrawerLayout.LayoutParams) mDrawerList.getLayoutParams(); params.width = width; mDrawerList.setLayoutParams(params);
如果您的listView嵌入在DrawerLayout的子窗体的另一个布局中,我发现您在此包装布局上设置了新的布局参数.做这个答案的所有内容,但必要时使用listView的父容器. (4认同)
我在这里得到类强制转换异常..我该如何继续? (2认同)
Akhil Jain.. 7
您必须手动计算屏幕大小并在运行时将动态宽度设置为抽屉布局,以下是如何在运行时获取设备屏幕宽度和高度
使用此代码,您可以获得运行时显示的宽度和高度
DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int width = displaymetrics.widthPixels;
现在,您需要将宽度除以2
int newWidth=width/2;
现在将宽度设置为ListView,就像这样
drawer_list.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,newWidth));
这将适用于所有设备,并将在所有设备上提供统一的大小.
您必须手动计算屏幕大小并在运行时将动态宽度设置为抽屉布局,以下是如何在运行时获取设备屏幕宽度和高度
使用此代码,您可以获得运行时显示的宽度和高度
DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int width = displaymetrics.widthPixels;
现在,您需要将宽度除以2
int newWidth=width/2;
现在将宽度设置为ListView,就像这样
drawer_list.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,newWidth));
这将适用于所有设备,并将在所有设备上提供统一的大小.
动态设置ListView的宽度...
mDrawerLayout = (DrawerLayout) view.findViewById(R.id.drawer_layout); mDrawerList = (ListView) view.findViewById(R.id.top_sectionlist); int width = getResources().getDisplayMetrics().widthPixels/2; DrawerLayout.LayoutParams params = (android.support.v4.widget.DrawerLayout.LayoutParams) mDrawerList.getLayoutParams(); params.width = width; mDrawerList.setLayoutParams(params);