gpt4 book ai didi

Android 忽略 styles.xml 中的 layout_weight 参数

转载 作者:太空狗 更新时间:2023-10-29 16:17:10 27 4
gpt4 key购买 nike

看起来 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 的方法吗?

最佳答案

在构造函数中读取布局参数不起作用。原因很合乎逻辑——当您创建 ImageButton

new ImageButton(this.getActivity(), null, R.style.TabbedPanelToolbarControl);

此构造函数将读取样式属性。但是,由于它不在 LinearLayout(或任何其他父级)中,它不知道必须实例化哪个 LayoutParams。由于通用 ViewGroup.LayoutParams 没有 weight 属性,它将被忽略。

当通过 LayoutInflater 膨胀时,情况就完全不同了。 LayoutInflater类中的相关代码是这样的:

final View view = createViewFromTag(parent, name, attrs);
final ViewGroup viewGroup = (ViewGroup) parent;
final ViewGroup.LayoutParams params = viewGroup.generateLayoutParams(attrs);

由于 viewGroup 变量是一个完全创建的 LinearLayout,它有一个重写的 generateLayoutParams() 来读取两个 weightgravity

关于Android 忽略 styles.xml 中的 layout_weight 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24213193/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com