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 例如:&lt;item name="colorPrimary"&gt;@color/gray&lt;/item&gt; 但更改此颜色会影响所有你的小部件。

您可以使用 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 的地址和电话号码

listview 列表项中的子项变为空 p.e.当视图回收

为啥 pytesseract 无法识别背景较暗的图像中的数字?

Android 从 ListView 项中提取特定值

如何在 iOS7 的 UIPopoverController 中禁用较暗的透明效果?

在android studio中删除一个带有按钮的listview项目