【发布时间】:2020-04-16 16:58:24
【问题描述】:
我想制作一个back 按钮,其样式如下:
<style name="back_button" parent="Widget.AppCompat.Button.Borderless">
<item name="android:fontFamily">@font/frutiger_light</item>
<item name="android:textColor">@color/lightSaber</item>
<item name="android:textSize">16sp</item>
<item name="android:textAllCaps">false</item>
<item name="android:text">@string/back</item>
<item name="android:background">@android:color/transparent</item>
</style>
但现在我已经有了一种退出的风格:
<style name="FrutigerLight16LightSaber">
<item name="android:fontFamily">@font/frutiger_light</item>
<item name="android:textColor">@color/lightSaber</item>
<item name="android:textSize">16sp</item>
</style>
所以我想用Widget.AppCompat.Button.Borderless 和FrutigerLight16LightSaber 添加一个新样式。
我通过组合. 和parent 尝试了两种解决方案,但都不起作用。
一个:
<style name="FrutigerLight16LightSaber.Borderless" parent="Widget.AppCompat.Button.Borderless">
</style>
然后
<style name="back_button" parent="FrutigerLight16LightSaber.Borderless">
<item name="android:textAllCaps">false</item>
<item name="android:text">@string/back</item>
<item name="android:background">@android:color/transparent</item>
</style>
这样,我就失去了FrutigerLight16LightSaber的风格。
两个
<style name="FrutigerLight16LightSaberBorderless" parent="FrutigerLight16LightSaber">
<item name="android:borderlessButtonStyle">@style/Widget.AppCompat.Button.Borderless</item>
</style>
然后
<style name="back_button" parent="FrutigerLight16LightSaberBorderless">
<item name="android:textAllCaps">false</item>
<item name="android:text">@string/back</item>
<item name="android:background">@android:color/transparent</item>
</style>
这样我就输了Widget.AppCompat.Button.Borderless。
感谢您的帮助!
【问题讨论】:
-
当两个主题具有相同的属性时,您如何期望边距完成?你必须失去其中一个,因为对方会覆盖该值
-
@MoustafEL-Saghier 抱歉,如果我理解正确,您是说
margin是layout_marginTop等属性吗?我实际上只是想使用这两种现有的风格并将它们结合起来。 -
抱歉,正在合并fk自动更正
-
我认为点
.是一种风格的继承,parent是另一种风格。 -
嗯,父母和孩子共同的属性呢? e.x 父母有 texTcolor x,孩子有 y ...你尝试合并它们 什么是 texTcolor?明白了吗?