看起来 android 忽略了 ImageButton 的布局参数。当我的布局 xml 使用样式定义 ImageButtons 时,会考虑 layout_weight。但是,当我动态添加按钮时,权重会被忽略,我必须手动定义 LayoutParameters。
Styles.xml 条目:
<style name="TabbedPanelToolbarControl" parent="android:style/Widget.ImageButton">
<item name="android:background">@null</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1.0</item>
<item name="android:paddingTop">5dp</item>
<item name="android:paddingBottom">5dp</item>
</style>
布局xml:
...
<LinearLayout
android:id="@+id/toolbar"
android:orientation="vertical" >
<!-- image buttons go here -->
</LinearLayout>
...
代码:
View view = inflater.inflate(R.layout.test, container, false);
LinearLayout mToolbar = (LinearLayout)view.findViewById(R.id.toolbar);
ImageButton ib = new ImageButton(this.getActivity(), null, R.style.TabbedPanelToolbarControl);
ib.setImageDrawable(icon);
ib.setContentDescription(title);
// ignored layout_weight defined in TabbedPanelToolbarControl style
mToolbar.addView(ib);
// need to re-specify layout
mToolbar.addView(ib, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1.0f));
任何人都知道在动态添加按钮时强制从 styles.xml 读取 layout_weight 的方法吗?