2012-07-27 70 views
0

这是一个简单的问题,按钮setPressed()的onclick

在我的XML文件我有:

<Button 
android:id="@+id/button_8" 
android:layout_width="0dp" 
android:layout_height="wrap_content" 
android:text="@string/Bf" 
android:background="@drawable/button_purple" 
android:layout_weight="1" 
android:textColor="#ffffff" 
android:onClick="action"    
/> 

而且在我的活动我有:

public void action (View v) 
{ 
    s = "m"; 
    changeCouleur("blue"); 
    v.setPressed(true); 
} 

当我按下它正在工作的按钮,但按钮不会保持按下状态。

我不使用的图像这是我使用的颜色:提前

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" > 
     <shape> 
      <solid 
       android:color="#449def" /> 
      <stroke 
       android:width="1dp" 
       android:color="#2f6699" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
    <item android:state_focused="true" > 
     <shape> 
      <solid 
       android:color="#449def" /> 
      <stroke 
       android:width="1dp" 
       android:color="#2f6699" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <gradient 
       android:startColor="#449def" 
       android:endColor="#2f6699" 
       android:angle="270" /> 
      <stroke 
       android:width="1dp" 
       android:color="#2f6699" /> 
      <corners 
       android:radius="4dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
</selector> 

感谢,如果你发现了一些错误。 请任何人有任何想法?

+2

也许你需要ToggleButton? – 2012-07-27 19:21:07

+0

也许它不起作用?尝试((按钮)v).setPressed(true) – 2012-07-27 19:21:34

+0

我试图施放,但不起作用。 – user1527152 2012-07-27 19:30:31

回答

0

从我的理解是,您正在尝试使用按钮来打开/关闭状态,此按钮的状态也会清楚地指示该功能的状态。

如果我是正确的,那么使用自定义复选框。您将不得不为不同的复选框状态定义选择器(如user1071979所述)。

+0

我想你明白我想要做什么,但user1071979解决方案不能帮助我。 – user1527152 2012-07-27 19:58:52

+0

那么在那种情况下使用ToggleButton并在选择器中定义android的项目:state_checked =“true”&android:state_checked =“false” – 2012-07-29 08:55:34

0

你必须使用两个图像来做到这一点。

button_normal button_pressed 然后绘制文件夹

<?xml version="1.0" encoding="UTF-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_pressed="false" 
    android:drawable="@drawable/button_normal" /> 

<item android:state_pressed="true" 
    android:drawable="@drawable/button_pressed" /> 

</selector> 

然后,设置该文件作为ImageView的背景创建一个XML资源。这里我们使用imageview作为按钮。不要忘记在可绘制文件夹中包含这两个按钮。

+0

我已经编辑我的问题(我不使用图片) – user1527152 2012-07-27 19:32:14