Vek*_*eka 13 android android-layout android-xml android-viewgroup android-toolbar
我试图通过这种方式以编程方式设置工具栏的高度:
toolbar.setLayoutParams(new Toolbar.LayoutParams(LayoutParams.MATCH_PARENT, 42));
toolbar.setMinimumHeight(42);
Run Code Online (Sandbox Code Playgroud)
但是这个日志会导致致命的异常 - > android.widget.relativelayout$layoutparams cannot be cast to android.support.v7.Toolbar$layoutparams
我也尝试这个变种:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) toolbar.getLayoutParams();
params.height = 42;
toolbar.setLayoutParams(params);
toolbar.setMinimumHeight(42);
Run Code Online (Sandbox Code Playgroud)
它没有给出异常,但它也不起作用,工具栏得到它的默认更大的高度而不是我定义的.但当然要设置参数xml工作中,但我也需要在java中设置高度.
所以请帮我解决问题.
Var*_*oid 16
试试这个 -
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mToolbar.getLayoutParams();
layoutParams.height = 42;
mToolbar.setLayoutParams(layoutParams);
Run Code Online (Sandbox Code Playgroud)
这对我来说可以.
如果上面的代码仍然不起作用,请尝试在最后添加此行 -
mToolbar.requestLayout();
Run Code Online (Sandbox Code Playgroud)
以上行将强制您的工具栏重新测量所有内容.您的代码可能无法正常工作,因为您试图在布局膨胀后更改高度.在这种情况下,您需要强制View重新测量所有内容.请查看以下方法以获取更多信息 - requestLayout(),invalidate()和forceLayout().在改变LayoutParams的同时,这三种方法都很方便但价格很高.如果您的布局非常繁重且包含大量子视图,则调用这些方法中的任何一种都会影响应用程序的性能,特别是在低端设备上.因此,请确保您仔细使用这些方法.
您提到的崩溃正在发生,因为您的工具栏是根视图的子视图,您的根视图是RelativeLayout.希望能帮助到你.
另外请不要按照Silambarasan Poonguti的回答,因为它有点含糊不清.如果您尝试访问子LayoutParams,则需要进行LayoutParams转换.即使View有自己的LayoutParams,你必须将它转换为父或根LayoutParams.如果您的工具栏是RelativeLayout的子视图,那么将LayoutParams转换为Toolbar.LayoutParams会使应用程序崩溃,您必须将LayoutParams强制转换为RelativeLayout.LayoutParams
尝试这个...
工具栏有自己的LayoutParams。你不能将它转换为RelativeLayout。
Toolbar.LayoutParams params = (Toolbar.LayoutParams)mToolbar.getLayoutParams();
params.height = 42;
mToolbar.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)
如果您想在运行时设置工具栏的高度,只需这样做,
int expected_height = your value;
mToolbar.setMinimumHeight(expected_height );
Run Code Online (Sandbox Code Playgroud)
快乐编码...
| 归档时间: |
|
| 查看次数: |
12572 次 |
| 最近记录: |