如何在styles.xml中设置按钮layout_contraintWidth_percent



我需要应用程序的所有按钮都具有相同的宽度和高度。所以我尝试在styles.xml:中这样做

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:buttonStyle">@style/MyButton</item>
</style>
<style name="MyButton" parent="@style/Widget.AppCompat.Button">
<item name="layout_constraintHeight_percent">0.15</item>
<item name="layout_constraintWidth_percent">0.23</item>
</style>

它不起作用,按钮忽略了这些值。如何实现?

而且,一旦我实现了它,我如何覆盖那些我需要更大的特定按钮的值?

您需要为每个受影响的按钮在XML中添加以下内容:

style="@style/MyButton"

为什么?按钮使用属性android:buttonStyle来设置自己的样式。要更改的值与布局有关,与按钮无关,而是与ConstraintLayout有关。

在布局过程中,ConstraintLayout不查看主题中设置的android:buttonStyle属性,因此它会错过在按钮样式中设置的值。style="@style/MyButton"将按钮样式中的值强制转换为布局所考虑的属性,按钮将随您的更改而出现。

明确地设置样式并不是那么干净,但它会起作用。

您需要将按钮的高度和宽度设置为0dp,然后它才能工作。

在任何情况下,当你需要这些按钮更大时,你都可以在该按钮中使用百分比属性。这样,它将忽略样式百分比约束。

最新更新