我希望按钮具有我指定的颜色,但否则外观和行为仍与标准按钮类似。因此我搜索并找到了this。我按照那里给出的建议进行操作,但是背景颜色保持标准灰色。知道我哪里出错了吗?
在我的styles.xml中,输入以下内容:
<style name="AppTheme.Button" parent="Widget.AppCompat.Button.Borderless.Colored">
<item name="android:colorButtonNormal">@color/colorButtonDark</item>
<item name="android:textColor">@color/colorAccent</item>
</style>
我的颜色是这些
<resources>
[...]
<color name="colorAccent">#ffffff</color>
<color name="colorButtonDark">#300a03</color>
</resources>
一个示例Button看起来像这样:
<Button
android:text="exampleButton"
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@+id/button7" android:layout_marginTop="8dp"
app:layout_constraintTop_toTopOf="@+id/guideline19" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline"
android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" android:theme="@style/AppTheme.Button"/>
答案 0 :(得分:0)
尝试在XML中使用android.support.v7.widget.AppCompatButton
而不是Button
。
<android.support.v7.widget.AppCompatButton
android:text="exampleButton"
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@+id/button7" android:layout_marginTop="8dp"
app:layout_constraintTop_toTopOf="@+id/guideline19"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline"
android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" android:theme="@style/AppTheme.Button"/>
答案 1 :(得分:0)
代替
android:theme="@style/AppTheme.Button"
使用
android:style="@style/AppTheme.Button"
。
EDIT1:
主题与风格
那么到底有什么区别呢?好吧,他们俩 以完全相同的方式声明(您已经知道), 区别在于使用方式。
主题旨在成为您应用程序样式的全球来源。的 新功能并没有改变它,只是允许您对其进行调整 每次观看。
样式应在视图级别应用。在内部,当你 在视图上设置样式,LayoutInflater将读取样式并应用 将其添加到AttributeSet之前的任何显式属性(这使您可以 覆盖视图上的样式值。
属性集中的值可以引用“视图”主题中的值。
TL; DR:主题是全局的,样式是局部的。