3

我刚刚开始使用 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

4 回答 4

7

如果您手动设置颜色,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>

例如,将选择器文件放在您的可绘制对象中

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" />
于 2013-02-26T14:12:29.977 回答
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>
于 2013-02-26T13:44:04.690 回答
0

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

于 2013-02-26T13:43:28.293 回答
0

android:state_pressed=" "在 bothpressed和 otherstate中。

按下按钮时

<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>
于 2017-09-09T14:26:48.810 回答