【问题标题】:2 attributes on 1 view android layout1个视图android布局上的2个属性
【发布时间】:2019-02-09 16:06:13
【问题描述】:

我正在尝试在带有背景颜色的线性布局上设置可选背景。我知道通常的方法是 android:background="?android:attr/selectableItemBackground" 但我已经在后台有另一个代码。这是代码的sn-p。

<LinearLayout
        android:id="@+id/number"
        android:layout_width="150dp"
        android:layout_height="130dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="5dp"
        android:layout_marginTop="0dp"
        android:background="@color/category_colors"
        android:gravity="center"
        android:orientation="vertical"
        android:weightSum="1">

问题是我如何设置可选背景?

【问题讨论】:

    标签: java android xml


    【解决方案1】:

    试试这个剪断大小的代码:

    android:foreground="?android:attr/selectableItemBackground"
    android:clickable="true"
    android:focusable="true"
    

    android foreground 属性是比较新添加的XML 属性,但不适用于API 22 及以下!如果是这种情况,那么看起来我们将不得不在自定义 XML 文件中堆叠属性,但别担心,这比听起来容易!

    1)在您的项目视图中转到 res/drawable 文件夹

    2)右键单击Drawable文件夹本身并选择新建>>>drawable资源文件

    3)输入文件名 my_custom_button.xml(根目录无关紧要,您将用下面的代码替换它)

    4)如果您还没有,请单击 XML 文本选项卡(与设计视图相反)

    5)选择所有文本并基本上替换为以下内容: (创建自定义颜色边框的步骤基本相同)。 随意更改和使用颜色或将渐变(颜色混合)替换为您自己的自定义颜色!

    <?xml version="1.0" encoding="utf-8"?>
    <ripple
     xmlns:android="http://schemas.android.com/apk/res/android"
       android:color="@color/category_colors">
        <item android:id="@android:id/ripple">
            <shape android:shape="rectangle">
              <solid android:color="@color/colorPrimaryDark" />
                 <corners android:radius="@dimen/button_radius_large" />
           </shape>
       </item>
    
        <item android:id="@android:id/background">
           <shape android:shape="rectangle">
                <gradient
                   android:angle="90"
                   android:endColor="@color/colorPrimaryLight"
                   android:startColor="@color/colorPrimary"
                   android:type="linear" />
               <corners android:radius="@dimen/button_radius_large" />
            </shape>
        </item>
    </ripple>
    

    希望这有帮助!!!

    【讨论】:

    • 我忘了说你必须包含这两个属性 android:clickable="true" 和 android:focusable="true" 我更新了我的答案以包含更多可能的解决方案
    【解决方案2】:

    您应该像下面的代码一样将选择器 XML 文件作为背景,并应用您的初始颜色以及按下和按下的颜色。

    然后你必须像这样创建 res/drawable/bg_selector.xml 文件:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:state_pressed="true"
                android:color="@color/color_056DAE" /> <!-- pressed -->
      <item android:state_focused="true"
                android:color="@color/color_056DAE" /> <!-- focused -->
      <item android:color="@color/color_333333" /> <!-- default -->
    </selector>
    

    那么您必须将此文件应用到 XML 布局的背景。

    android:background="@drawable/bg_selector"
    

    【讨论】:

      猜你喜欢
      • 2021-05-26
      • 1970-01-01
      • 2014-08-09
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多