【发布时间】:2015-06-19 13:21:03
【问题描述】:
在我的应用中,我使用的是android.support.v7.widget.Toolbar。
工具栏的左半部分始终充当后退按钮。
对于不同的活动,右半部分是不同的。有时它只是文本,有时是一个按钮。所以我以编程方式用视图膨胀右半部分。
工具栏
<android.support.v7.widget.Toolbar>
...
... <LinearLayout
android:id="@+id/left_LL"/>
...
<LinearLayout
android:id="@+id/right_LL"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:orientation="horizontal" />
</android.support.v7.widget.Toolbar>
我在 right_LL 中夸大了这个视图:
child_button.xml
<?xml version="1.0" encoding="utf-8"?>
<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/right_IB"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/save"
android:background="@null"
android:onClick="onRightHeaderButton"
android:scaleType="fitXY" />
我像这样以编程方式添加它:
right_LL.addView(inflater.inflate(R.layout.child_button,
null, false));
所以问题是按钮占据了屏幕的一半。它的原始尺寸是 512x512。
我认为也许 LayoutParams 会以某种方式被重置,所以我也尝试了
final float scale = getResources().getDisplayMetrics().density;
int pixels = (int) (30 * scale + 0.5f);
right_IB = (ImageButton) right_LL.findViewById(R.id.right_IB);
right_IB.setLayoutParams(new ViewGroup.LayoutParams(
pixels,pixels));
它给出了这个例外:
java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
任何帮助将不胜感激。
【问题讨论】:
标签: android android-layout android-inflate layoutparams