我创建了非常简单的视图。我想为我的按钮创建默认布局并通过AppTheme导入它,我在清单文件中添加了它。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="buttonStyle">@style/ButtonStyle</item>
<item name="android:buttonStyle">@style/ButtonStyle</item>
<item name="android:button">@style/ButtonStyle</item>
</style>
<style name="ButtonStyle" >
<item name="android:textSize">20dp</item>
<item name="android:gravity">center</item>
<item name="android:layout_width">150dp</item>
<item name="android:layout_gravity">center</item>
<item name="android:layout_marginTop">10dp</item>
<item name="android:background">@drawable/defaultbutton</item>
</style>
所以我期望将我的应用程序中的所有按钮设置为这个设置的样式。只有我可以完成它的方法是使用我的按钮导入样式
style="@style/ButtonStyle"
按钮'开始测试'通过内部导入设置样式。
有趣的是,某些样式被导入按钮“设置”和“检查传感器”(如可绘制/默认按钮或居中文本)
<Button
style="@style/ButtonStyle"
android:id="@+id/test"
android:layout_height="50dp"
android:text="Start Test" />
<Button
android:id="@+id/settings"
android:layout_width="150dp"
android:layout_height="50dp"
android:text="Settings" />
<Button
android:id="@+id/checkSensors"
android:layout_width="150dp"
android:layout_height="50dp"
android:text="Check Sensors" />
我的问题是,为什么会发生这种情况,如果不通过“主题”导入它,我就无法将其设置为默认值?
自定义样式应扩展Widget
样式以与buttonStyle
属性一起使用。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="buttonStyle">@style/Widget.AppCompat.Button.ButtonStyle</item>
</style>
<style name="Widget.AppCompat.Button.ButtonStyle">
<item name="android:textSize">20dp</item>
<item name="android:gravity">center</item>
<item name="android:layout_width">150dp</item>
<item name="android:layout_gravity">center</item>
<item name="android:layout_marginTop">10dp</item>
<item name="android:background">@drawable/defaultbutton</item>
</style>