在我的Android设备上,选择器按钮无法正常工作,如何解决?

3

大家好,我写了下面的selector_button.xml来让我的按钮在被点击时更加美观。但是它并没有对我的按钮产生影响。我错在哪里了?

这是selector_button.xml的内容:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >

     <!-- When clicked  -->
    <item android:state_pressed="true"
        android:state_selected="true" >
        <shape >
        <gradient        
            android:angle="90"        
            android:centerColor="@color/Lightgray"        
            android:endColor="@color/White"        
            android:startColor="@color/LightBlue"/>    
            <corners android:radius="12dip" />    
            <stroke        
                android:width="0dip"       
                 android:color="@color/LightBlue" />

         </shape>
    </item>
    <!-- When not clicked-->
      <item >
        <shape >
        <gradient        
            android:angle="90"        
            android:centerColor="#ff008888"        
            android:endColor="@color/LightBlue"        
            android:startColor="@color/Lightgray"/>    
            <corners android:radius="12dip" />    
            <stroke        
                android:width="0dip"       
                 android:color="@color/LightBlue" />
      </shape> 
</item>


</selector>
5个回答

3
  <!-- When not clicked-->
  <item android:state_pressed="false"> <!-- you need to define ur state to false-->
    <shape >
    <gradient        
        android:angle="90"        
        android:centerColor="#ff008888"        
        android:endColor="@color/LightBlue"        
        android:startColor="@color/Lightgray"/>    
        <corners android:radius="12dip" />    
        <stroke        
            android:width="0dip"       
             android:color="@color/LightBlue" />
     </shape> 
  </item>

1

改为这样(使用您的颜色)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- When clicked -->
    <item android:state_pressed="true"><shape>
            <gradient android:angle="90" 
                android:centerColor="#999966" 
                android:endColor="@android:color/white" 
                android:startColor="#5E5EFF" />

            <corners android:radius="12dip" />

            <stroke android:width="0dip"
                android:color="#5E5EFF" />
        </shape></item>
    <!-- When not clicked -->
    <item android:state_selected="false"><shape>
            <gradient android:angle="90" 
                android:centerColor="#ff008888" 
                android:endColor="#5E5EFF" 
                android:startColor="#999966" />

            <corners android:radius="12dip" />

            <stroke android:width="0dip" 
                android:color="#5E5EFF" />
        </shape></item>

</selector>

0
在你的第二个项目标签中添加这个属性...
并确保将此按钮的背景设置为@drawable/selector_button。

我需要添加哪个属性? - sarah
抱歉,这是一个打字错误。应该改为 <item state_pressed="false"> 而不是 <item>。 - Menna-Allah Sami

0

我最终在朋友的指导下解决了问题。我将代码更改为这样,结果也很好。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >

     <!-- When clicked  -->
    <item android:state_pressed="true">
        <shape >
        <gradient        
            android:angle="90"        
            android:centerColor="@color/Lightgray"        
            android:endColor="@color/White"        
            android:startColor="@color/LightBlue"/>    
            <corners android:radius="12dip" />    
            <stroke        
                android:width="0dip"       
                 android:color="@color/LightBlue" />

         </shape>
    </item>
    <!-- When not clicked-->
      <item android:state_pressed="false" >
        <shape >
        <gradient        
            android:angle="90"        
            android:centerColor="#ff008888"        
            android:endColor="@color/LightBlue"        
            android:startColor="@color/Lightgray"/>    
            <corners android:radius="12dip" />    
            <stroke        
                android:width="0dip"       
                 android:color="@color/LightBlue" />
      </shape> 
</item>


</selector>

0

兄弟,试试这种方法:

xml 中设置标签如下:

android:tag="0"

onClick 函数中:

String tag =  (String) v.getTag();
            if(!tag.equalsIgnoreCase("0"))
            {//apply which you want(styling)
                v.setBackgroundResource(R.drawable.active_baner_community);
                v.setTag("0");
            }
            else
            {//apply which you want(styling)
                v.setBackgroundResource(R.drawable.baner_community);
                v.setTag("1");
            }

@Revind Maurya 谢谢。但是我必须在哪里写android:tag=0?在我的按钮所在的xml文件中还是在selector_button.xml文件中? - sarah
在你的按钮兄弟中,你想要改变哪个按钮的样式? - Ravind Maurya
你还需要在你的按钮上应用点击监听器。 - Ravind Maurya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接