我可以在整个App中使用一个按钮和多种样式吗?

时间:2018-09-07 14:28:53

标签: android android-styles

对于android样式技术,我还是比较陌生,我想将我的头放在可重复使用的组件周围。我的应用程序有许多分散在其视图层次结构中的按钮,它们几乎完全相同(可变字体颜色和按钮颜色)。是否可以定义一个按钮可绘制对象,然后将其应用不同的样式,例如,一个按钮具有一个可绘制的定义,将其作为背景应用到Button xml属性,例如<Button> android:background="@drawable/basic_btn"</Button>,然后自定义,例如通过样式设置按钮颜色,例如

<Button
style="@style/Button.Green"
android:background="@drawable/basic_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

然后,如果我想使用相同的可绘制对象作为蓝色按钮,则可以设置以下内容:

<Button
style="@style/Button.Blue"
android:background="@drawable/basic_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

这可能吗?尝试此操作时,我目前没有得到想要的结果。

编辑答案:

回想一下我的帖子,我认为我对最初的问题描述得不够好,我感谢在此之间做出答复的每个人。我最初的问题是尝试将不同的<styles>应用于可绘制对象以实现不同的背景颜色,而实际上并没有更改背景颜色。我的解决方案是这样的。

定义可绘制形状:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ffffff"/>
<corners android:radius="3dp" />

下一步,将可绘制对象指定为背景

<Button style="@style/Button.basic
android:background="@drawable/btn_basic"
/>

现在要诀窍:

<Button style="@style/Button.basic
android:background="@drawable/btn_basic"
android:backgroundTint="@color/seafoam"
/>
默认情况下,

backgroundTint似乎在可绘制对象的顶部添加了颜色。这使我可以定义一个形状,但是在xml文件中使用时可以对其应用任何颜色。 backgroundTint

2 个答案:

答案 0 :(得分:0)

像这样使用TextView:-

<TextView
                android:id="@+id/reviewsTitleTxt"
                style="@style/txt_style_16sp_white_color_ffffff"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textAllCaps="true"
                android:gravity="center"
                android:text="@string/reviews_txt"
                android:layout_gravity="center_vertical"/>

Where Style file is:-
Define style in style file

 <style name="txt_style_16sp_white_color_ffffff">
        <item name="android:textSize">@dimen/txt_size_16sp</item>
        <item name="android:textColor">@color/white_color_ffffff</item>
    </style>

答案 1 :(得分:0)

由于我们已发表评论,您无法通过发布的答案解决此问题,因此我将尽力帮助您。

  • 首先,您应该在@style/ .xml

  • 上定义所有通用属性
  • 第二,为每个按钮定义一个@drawable/作为背景:

背景可绘制:

<?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android" 
        android:shape="rectangle">
  <corners android:radius="@dimen/button_round_radius"/>
  <solid android:color="@color/background_color"/>
</shape>

不好的是,您必须创建一个具有相同属性的新drawable才能更改颜色。

还要研究已经创建的主题/样式,这可能会帮助您参考此答案。

现在按钮的XML声明上:

<Button
style="@style/YourCommonAttributesStyling"
android:background="@drawable/a_drawable_shape_like_the_above"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

参考:Android Material Design Button Styles