我有最新的Android Studio和SDK(Compile SDK 21,Build Tools 21.1.2,appcompat v7 21.0.3),并使用空白活动模板制作一个全新的向导应用程序。
然后我只更改XML:根相对布局的背景(android:background =“#00FF00”)并添加一个按钮(使用图形编辑器,不更改按钮)。
这在Lollipop设备上运行良好。在软糖(4.2.2)设备或仿真器上,按钮呈灰色,呈绿色触摸。
这可能是主题(Theme.AppCompat.Light.DarkActionBar)的主题,但它是否应该在Lollipop和Jellybean设备上呈现相同的颜色?
我看到有关手动更改按钮背景的问题(例如How to make button non transparent),这是兼容性问题。
这是完整的xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:background="#00FF00">
<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="26dp"
android:layout_marginStart="26dp"
android:layout_marginTop="55dp" />
</RelativeLayout>
答案 0 :(得分:1)
AppCompat目前不支持Button小部件,因此Holo主题上的按钮(API级别小于21)的呈现方式与Material主题(API级别21+)不同。你需要定义一个这样的Button样式:
<style name="MyButtonStyle" parent="Base.MyButtonStyle"/>
然后在res / values文件夹中定义Base.MyButtonStyle
<style name="Base.MyButtonStyle" parent="android:Widget.Holo.Button">
<item name="android:background">@drawable/btn_default</item>
</style>
btn_default drawable将指向按钮的自定义选择器。
在res / values-v21中,您可以像这样定义Base.MyButtonStyle:
<style name="Base.MyButtonStyle" parent="android:Widget.Material.Button"/>
如果要更改21+按钮的正常或按下颜色,则分别在主题中设置colorButtonNormal和colorControlHighlight。
答案 1 :(得分:0)
如果您没有为按钮的xml指定style
或添加android:background="yourBackground"
,则Android会使用您的应用运行的Android版本的默认按钮样式呈现您的按钮。< / p>
例如,如果您将android:background="#FF0000"
添加到按钮,则不再存在不同Android版本的(大)差异。