我在尝试将布局参数设置到工具栏时遇到了奇怪的异常。
java.lang.ClassCastException: android.support.v7.widget.Toolbar$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
我想在工具栏的右侧放置一个内部视图,但由于xml layout_gravity
属性不正常(请参阅question),我试图以编程方式执行此操作。
我的代码如下所示:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setLayoutParams(new Toolbar.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
Gravity.CENTER | Gravity.RIGHT));
setSupportActionBar(toolbar);
如果我将LinearLayout.LayoutParams
的实例设置为布局参数,则工具栏会消失。
我将不胜感激任何帮助
答案 0 :(得分:1)
抛出异常是因为您尝试将LayoutParams强制转换为不继承的类,因此会抛出类强制转换异常。要解决这个问题,请使用LinearLayout.LayoutParams而不是
new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
Gravity.CENTER | Gravity.RIGHT));
做
// Toolbar height is 56dp as per material design guidelines
new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
56,
Gravity.CENTER | Gravity.RIGHT));
答案 1 :(得分:0)
设置特定高度:
new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
80,
Gravity.CENTER | Gravity.RIGHT);
或者向工具栏中添加项目,因此它不为空,wrap_content
实际上有一些内容可以包装。