【问题标题】:Android make a button borderless by combine two styles doesn't workAndroid通过结合两种样式使按钮无边框不起作用
【发布时间】: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.BorderlessFrutigerLight16LightSaber 添加一个新样式。

我通过组合.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 抱歉,如果我理解正确,您是说marginlayout_marginTop 等属性吗?我实际上只是想使用这两种现有的风格并将它们结合起来。
  • 抱歉,正在合并fk自动更正
  • 我认为点 . 是一种风格的继承,parent 是另一种风格。
  • 嗯,父母和孩子共同的属性呢? e.x 父母有 texTcolor x,孩子有 y ...你尝试合并它们 什么是 texTcolor?明白了吗?

标签: android android-layout


【解决方案1】:

尝试使用

<style name="FrutigerLight16LightSaber.Borderless" 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>
</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 样式,而不是将属性移出样式。
  • 你不能同时定位两个父母
  • android style xml中不支持多重继承供您参考stackoverflow.com/a/6789914/9584758
猜你喜欢
  • 1970-01-01
  • 2017-10-28
  • 2015-09-01
  • 1970-01-01
  • 2020-01-05
  • 2023-03-26
  • 2015-07-05
  • 1970-01-01
  • 2017-10-21
相关资源
最近更新 更多