Android系统。按钮看起来没有按下

时间:2013-02-26 13:39:07

标签: android button

我刚刚开始使用Android开发。我有一个非常简单的按钮,如下所示:

<Button
    android:id="@+id/howItWorksButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="58dp"
    android:text="@string/how_it_works_button_title" />

在代码中我为它设置了背景颜色:

howItWorksButton.setBackgroundColor(Color.RED);

这是onClickListener:

howItWorksButton.setOnClickListener(new OnClickListener()
    {
        public void onClick(View view)
        {
            Intent intent = new Intent(MainMenuActivity.this, HowItWorksActivity.class);
            MainMenuActivity.this.startActivity(intent);
        }
    });

问题是,当我点击它时,它看起来并没有被按下,它只是保持原样,没有变化。它的onClick方法工作正常,功能一切都很好,但我希望它看起来有所改变,就像所有按钮在按下时一样。

4 个答案:

答案 0 :(得分:6)

如果您手动设置其颜色,Android不会像iOS那样自动显示按下状态。这是推荐的方法。

将colors.xml文件夹放在values文件夹中。它的内容应该是这样的。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="white">#ffffffff</color>
    <color name="darkwhite">#ffeeeeee</color>
    <color name="transparent">#00ffffff</color>
    <color name="semitransparent">#88000000</color>
    <color name="orange">#ffff8800</color>
    <color name="light_orange">#ffe27d18</color>
    <color name="light_blue">#ff00a2e8</color>
    <color name="black">#ff000000</color>
    <color name="menuButtonColor">#ffea8e44</color>
</resources>

将选择器文件放在drawable中,例如

my_button_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/light_orange" android:state_pressed="true"/>
    <item android:drawable="@color/orange"/>
</selector>

像这样使用你的选择

<Button
    android:id="@+id/howItWorksButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="58dp"
    android:text="how_it_works_button_title"
    android:background="@drawable/my_button_selector" />

答案 1 :(得分:2)

试试这个,

使用Selector

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

<item android:drawable="@drawable/login_btn" android:state_pressed="false"/>
<item android:drawable="@drawable/login_btn_focus" android:state_pressed="true"/>

</selector>

答案 2 :(得分:0)

你需要设置一个图像选择器作为背景,告诉android当按下按钮,聚焦,禁用时,你希望看到哪个图像或颜色...... 在这里你可以找到一个例子 http://www.mkyong.com/android/android-imagebutton-selector-example/

答案 3 :(得分:0)

android:state_pressed=" "和其他pressed中撰写state

按下按钮时

<item android:state_pressed="true">
    <shape>
        <solid android:color="@color/green" />
        <corners android:radius="@dimen/btn_corner_rds" />
    </shape>
</item>

未按下按钮时

<item android:state_pressed="false">
    <shape>
        <solid android:color="@android:color/transparent" />
        <stroke android:width="@dimen/stroke_width_btn"  />
        <corners android:radius="@dimen/btn_corner_rds" />
    </shape>
</item>