【问题标题】:Android button select and press drawableAndroid按钮选择并按下drawable
【发布时间】:2012-11-06 18:27:11
【问题描述】:

我正在尝试制作一个状态为按下并选择的按钮, 我已经对标签做了同样的事情,它可以工作,但我不知道为什么这里不起作用。 我是这样做的:

button_sel.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle">
    <gradient android:startColor="@color/azulado" 
              android:endColor="@color/azulBrillante"
              android:angle="270" />
     <corners android:radius="@dimen/corner_radius" />
     <stroke android:width="2px" 
             android:color="@color/blanco" />
 </shape>

button_unsel.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle">
    <gradient android:startColor="@color/botonesD" 
              android:endColor="@color/botones"
              android:angle="270" />
    <corners android:radius="@dimen/corner_radius" />
    <stroke android:width="2px" 
            android:color="@color/blanco" />
</shape>

还有选择器,button.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_sel"  
          android:state_selected="true" 
          android:state_pressed="true"/>
<item android:drawable="@drawable/button_unsel" 
      android:state_selected="false" 
      android:state_pressed="false"/>
</selector>

这里我把drawable称为背景:

 <style name="button">
    <item name="android:background">@drawable/button</item>
    <item name="android:textSize">@dimen/text_size</item>
    <item name="android:padding">@dimen/padding_button</item>
    <item name="android:textColor">@color/blanco</item>
 </style>

谢谢!!!!

【问题讨论】:

    标签: android button styles android-drawable xml-drawable


    【解决方案1】:

    选择器中的第一项仅在按下并选择按钮时使用。如果您想在按下或选择按钮时使用button_sel,您应该执行以下操作:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/button_sel" android:state_selected="true" />
        <item android:drawable="@drawable/button_sel" android:state_pressed="true" />
        <item android:drawable="@drawable/button_unsel" />
    </selector>
    

    项目从上到下评估,最后一个是默认值。虽然我不确定 state_selected 是否对按钮有意义。

    【讨论】:

      【解决方案2】:

      可以使用形状内联项。

         <selector xmlns:android="http://schemas.android.com/apk/res/android">
              <item android:state_pressed="true" >
                  <shape....>
              </item>
              <item android:state_selected="true" >
                  <shape....>
              </item>
              <item android:state_pressed="true" android:state_selected="true" >
                  <shape...>
              </item>
         </selector>
      

      示例:

      <?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android">
          <item android:state_selected="true" >
              <shape
                  android:shape="rectangle">
                  <gradient android:startColor="@color/md_amber_300"
                      android:endColor="@color/md_amber_50"
                      android:angle="270" />
                  <corners android:radius="@dimen/fab_margin" />
                  <stroke android:width="2px"
                      android:color="@color/primaryColorDark_orange" />
              </shape>
          </item>
          <item android:state_pressed="true" >
              <shape
                  android:shape="rectangle">
                  <gradient android:startColor="@color/md_amber_300"
                      android:endColor="@color/md_amber_50"
                      android:angle="270" />
                  <corners android:radius="@dimen/fab_margin" />
                  <stroke android:width="2px"
                      android:color="@color/primaryColorDark_orange" />
              </shape>
          </item>
          <item android:state_pressed="true" android:state_selected="true" >
              <shape
                  android:shape="rectangle">
                  <gradient android:startColor="@color/md_teal_500"
                      android:endColor="@color/md_blue_400"
                      android:angle="270" />
                  <corners android:radius="@dimen/fab_margin" />
                  <stroke android:width="2px"
                      android:color="@color/md_amber_A400" />
              </shape>
          </item>
      </selector>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-17
        • 2019-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多