向导航抽屉添加线性布局(最终因ClassCastException崩溃)

我试图在导航抽屉中添加垂直线性布局(标题,图像,菜单标题,列表视图和底部的图标)。 然而,应用程序崩溃显示

'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个元素(按照这个顺序):

  1. 你的主页

  2. 左抽屉

  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); } } 

做两件事:

  1. 设置gravity="START"到linearlayout而不是listview,因为LinearLayout现在是抽屉。
  2. 在关闭抽屉时呼叫抽屉。关闭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,它不再是您正在关闭或打开的列表视图。