ListView 项中较暗的按钮
Posted
技术标签:
【中文标题】ListView 项中较暗的按钮【英文标题】:Darker Buttons in ListView Item 【发布时间】:2021-08-13 14:07:10 【问题描述】:我有一个带有 ListView 的 Activity。我为 ListView-Item 编写了一个额外的 xml 文件。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layoutPalettenItem"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_
android:layout_
android:padding="15dp"
tools:context=".PalettenAdapter" >
<TextView
android:id="@+id/textViewPalettenBez"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:gravity="left|center_vertical"
android:text="Bezeichnung"
android:textColor="@android:color/black"
android:textSize="35sp" />
<Button
android:id="@+id/buttonPalettenPlus"
android:layout_
android:layout_
android:layout_alignParentRight="true"
android:text="+"
android:textColor="@android:color/white"
android:textSize="30sp" />
<TextView
android:id="@+id/textViewPalettenAnzahl"
android:layout_
android:layout_
android:layout_alignBaseline="@+id/buttonPalettenPlus"
android:layout_alignBottom="@+id/buttonPalettenPlus"
android:layout_toLeftOf="@+id/buttonPalettenPlus"
android:gravity="center"
android:text="0"
android:textColor="@android:color/black"
android:textSize="25sp" />
<Button
android:id="@+id/buttonPalettenMinus"
android:layout_
android:layout_
android:layout_alignBaseline="@+id/textViewPalettenAnzahl"
android:layout_alignBottom="@+id/textViewPalettenAnzahl"
android:layout_toLeftOf="@+id/textViewPalettenAnzahl"
android:text="-"
android:textColor="@android:color/white"
android:textSize="30sp" />
</RelativeLayout>
如您所见,xml 包含两个按钮(+ 和 -)。一切正常,项目加载到列表中。按钮也是可点击的但它们的颜色较深。我将背景设置为@android:drawable/btn_default_holo_light
。它们的布局看起来不错,但当我启动应用程序时,按钮会保持较暗。
如果您需要更多代码,请告诉我。 如果你能帮我解决这个问题,我会很高兴
【问题讨论】:
【参考方案1】:Theme.MaterialComponents 的默认按钮背景颜色在您的 theme.xml 文件中定义,属性为 colorPrimary 例如:<item name="colorPrimary">@color/gray</item>
但更改此颜色会影响所有你的小部件。
您可以使用 app:backgroundTint
属性更改按钮背景颜色,如下所示:
<Button
android:layout_
android:layout_
app:backgroundTint="@android:color/holo_blue_dark"/>
您还必须在根 xml 视图上添加 xmlns:app 命名空间,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
使用 Theme.MaterialComponents 的上述颜色@android:color/holo_blue_dark 的结果将如下所示:
【讨论】:
您好,感谢您的回答!如果我在按钮的 xml 中粘贴app:backgroundTint="@android:color/holo_blue_dark"
,它会显示“属性缺少 Android 命名空间前缀”。如果我将其更改为android:backgroundTint="@android:color/holo_blue_dark"
,则会导致错误“错误:在包'android'中找不到属性'backgroundTint'的资源标识符”
查看我更新的答案如何在您的根视图上添加 xmlns:app 命名空间。
嘿,我刚刚用您更新的答案再次尝试,但没有任何效果
很可能是因为您没有从themes.xml 文件中的parent=Theme.MaterialComponents 主题继承,而是从例如:parent=Theme.AppCompat.Light.NoActionBar 继承。以上答案仅适用于 Theme.MaterialComponents 主题。如果您没有从 MaterialComponents 继承,那么只需将 android:background="@android:color/holo_blue_dark" 添加到按钮中即可。以上是关于ListView 项中较暗的按钮的主要内容,如果未能解决你的问题,请参考以下文章
无法从 ListView 项中检索 Intent 的地址和电话号码
为啥 pytesseract 无法识别背景较暗的图像中的数字?