我试图在导航抽屉中添加垂直线性布局(标题,图像,菜单标题,列表视图和底部的图标)。 然而,应用程序崩溃显示
'java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams'
错误。 我不确定这是否可能是直接的方式,因为我检查了几个链接,我得到的唯一关闭是这个。 任何帮助表示赞赏。 提前致谢。 这是我的代码。
现在的问题是,xml不允许我为listview定义宽度和高度(Element未知),我也无法运行它,因为编译器说“你必须提供layout_width”属性? 请帮忙。
我的代码与scrollview。
没有代码和堆栈跟踪,您的查询很难理解,但无论如何..
记住android.support.v4.widget.DrawerLayout只能有3个元素(按照这个顺序):
你的主页
左抽屉
右抽屉
复制粘贴此示例(仅前两个元素)并继续您的要求
你的活动:
public class MainActivity extends Activity { RelativeLayout leftRL; RelativeLayout rightRL; DrawerLayout drawerLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // I'm removing the ActionBar. requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.temp); leftRL = (RelativeLayout)findViewById(R.id.whatYouWantInLeftDrawer); drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); } public void onOpenLeftDrawer(View view) { drawerLayout.openDrawer(leftRL); } }
做两件事:
gravity="START"
到linearlayout而不是listview,因为LinearLayout现在是抽屉。 drawer.close(Gravity.START);
不要在这里传递listView对象。 我用你的答案得到了解决方案,谢谢:)。 实际上问题出在列表视图中。 我在左抽屉上得到了线性布局,但它没有正确显示,因为我添加了滚动视图到我的线性布局,我在同一个视图中也有一个列表,只显示列表中的第一个项目,留下整个屏幕空间空白。 我检查了几个链接以获得答案,但它没有用。 最后,由于我知道列表数据并且它不会动态改变,我添加了RadioButtons,自定义它们并替换列表。
我的代码现在看起来像下面。
我知道这可能不是最好的可能性,但至少它对我有用。 如果有人有更好的解决方案,请告诉我。
由于导入错误,此错误即将发生。 为布局参数添加适当的导入。
这个导入“ android.widget.LinearLayout.LayoutParams ”与LayoutParams的Drawerlayout库声明混合在一起,即“ android.support.v4.widget.DrawerLayout $ LayoutParams ”,导致ClassCast感知。
试试这个,
在函数selectItem中,更改mDrawerLayout.closeDrawer(mDrawerList) ; to mDrawerLayout.closeDrawer(mDrawerLinear); 应该工作得很好。
因为,引用现在应该是您的linearLayout,它不再是您正在关闭或打开的列表视图。