按下按钮质量保持颜色

时间:2017-06-08 19:25:57

标签: android

嗨,有人可以帮我这个代码

horse_btn_a1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      horse_btn_a1.setBackgroundColor(Color.parseColor("@drawable/ront2"));
    }
});

我想做的是当按下按钮时它必须保持这种颜色。

4 个答案:

答案 0 :(得分:0)

嘿,使用十六进制颜色" #ffffff"用parseColor     horse_btn_a1.setBackgroundColor(Color.parseColor("#FFFFFF&#34));

希望我能帮忙

答案 1 :(得分:0)

parseColor方法接受String,当然,但不是资源字符串。

首先需要获取资源String,然后解析:

像这样定义你的颜色资源

<resources>
    <color name="colorA">#FF00FF</color>
</resources>

然后在Java中使用它:

String colorString = getContext().getResources().getString(R.color.colorA);

Color c = Color.parseColor(colorString);

btn.setBackgroundColor(c);

答案 2 :(得分:0)

对于同一视图,您可以根据不同的状态(按下/禁用/聚焦)使用不同的绘图。看看

<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>

答案 3 :(得分:0)

你可以这样实现

red_circle_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">

            <solid android:color="#F00"/>

        </shape>
    </item>
</layer-list>

green_circle_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">

            <solid android:color="#0F0"/>

        </shape>
    </item>
</layer-list>

blue_circle_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">

            <solid android:color="#00F"/>

        </shape>
    </item>
</layer-list>

button_bg.xml

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


    <item android:drawable="@drawable/red_circle_bg" android:state_selected="true"/>
    <item android:drawable="@drawable/green_circle_bg" android:state_pressed="true"/>
    <item android:drawable="@drawable/blue_circle_bg"/>

</selector>

在你的布局中,你可以这样给出

<Button
        android:id="@+id/my_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_bg" />

我们应该采用这种逻辑来使其发挥作用

private boolean mIsSelected = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final Button horse_btn_a1 = findViewById(R.id.button);

    horse_btn_a1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            horse_btn_a1.setSelected(!mIsSelected);

            mIsSelected = !mIsSelected;
        }
    });
}

或我们应该使用Checkable Button