android - 具有 appcompat 的 ImageButton 背景颜色

标签 android android-appcompat

我在从 AppCompatImageButton 获得良好的背景时遇到问题,只是为了尝试比较这两种布局:

    <android.support.v7.widget.AppCompatImageButton
        android:id="@+id/imageButtonI"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:contentDescription="@string/icolor"
        android:tint="@color/accent"
        app:srcCompat="@drawable/magnify"/>

    <ImageButton
        android:id="@+id/imageButtonS"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:contentDescription="@string/scolor"
        android:tint="@color/accent"
        android:src="@drawable/magnify"/>

和样式文件:

<style name="AppBaseTheme" parent="android:Theme.Material">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primaryDark</item>
    <item name="android:colorAccent">@color/accent</item>
</style>

正如您从这张图片中看到的,ImageButton 的背景是“正常”的,而 appcompat 中没有任何背景。如何使用 AppCompatImageButton 获得“正常”背景?

Current layout rendering

最佳答案

设置 Button 样式的一个好方法是使用 @style/Widget.AppCompat.Button.Colored 样式。

Widget.AppCompat.Button.Colored 样式扩展了 Widget.AppCompat.Button 样式,并自动应用您在应用主题中选择的强调色。

<Button
    style="@style/Widget.AppCompat.Button.Colored"
 />

要自定义背景颜色而不更改主主题中的强调色,您可以使用 android:theme 属性并扩展 ThemeOverlay 为 Button 创建自定义主题主题。

 <Button  
     style="@style/Widget.AppCompat.Button.Colored"  
     android:theme="@style/MyButtonTheme"/> 

定义以下主题:

 <!-- res/values/themes.xml -->
  <style name="MyButtonTheme" parent="ThemeOverlay.AppCompat.Light"> 
      <item name="colorAccent">@color/my_color</item> 
 </style>

关于android - 具有 appcompat 的 ImageButton 背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39211921/

相关文章:

android - 如何使用社交授权库在 linkedin 和 twitter 上分享

android - JSONObject 到自定义对象的转换

android - 从文件路径获取 MediaStore 内容 Uri?

android - 带有白色工具栏和深色文本的应用

android - 如何在 android ActionBar 中从右到左 Activity 标签?

android - 将 Material Design Touch Ripple 应用于 ImageButton?

任何 google-play-services 功能的 java.lang.NoClassDefFoundError

xamarin - 构建时更新 Xamarin Forms 会产生 "invalid android support library configuration"错误。

android - AppCompat 上的 TextView 色调

android - MenuItemCompat.getActionView(searchItem) 返回 null