按下时更改按钮颜色

时间:2015-12-12 11:59:41

标签: java android android-layout button android-xml

我已经找到了其他答案,但他们在2岁和6岁的时候,所以我不知道这是否是最好的选择。

我正在创建一个转换十六进制,八进制和二进制的简单整数的应用程序。 用户可以通过位于片段顶部的三个按钮来选择整数必须转换为三个选项中的哪一个。

enter image description here

我正在搜索的效果是,如果用户按下三个按钮中的一个,则单击的按钮仍然是某种颜色。

这是我的XML代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:paddingRight="16dp"
android:paddingLeft="16dp" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="20dp">

    <Button
        android:id="@+id/hex_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:text="@string/hex_button"/>

    <Button
        android:id="@+id/binary_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:layout_toRightOf="@id/hex_button"
        android:text="@string/binary_button"/>

    <Button
        android:id="@+id/oct_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:layout_toRightOf="@id/binary_button"
        android:text="@string/oct_button"/>

</LinearLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/converted_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:inputType="number"
        android:text="@string/convert_button"/>

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="50dp">

        <EditText
            android:id="@+id/int_edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/integer_edit_text_hint"
            android:inputType="number" />

    </android.support.design.widget.TextInputLayout>

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="50dp"
        android:layout_alignParentBottom="true" >

        <EditText
            android:id="@+id/converted_number_edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="number" />

    </android.support.design.widget.TextInputLayout>

</RelativeLayout>

我是否必须在Java代码中或仅在XML中进行更改才能实现此目的?

4 个答案:

答案 0 :(得分:2)

您需要更改onClick()方法

的按钮小部件的颜色

答案 1 :(得分:1)

您必须为按钮设置onClickListener。在这个监听器中,您检查哪个按钮调用了触发监听器的事件,并在那里更改了该按钮的颜色。

所以你必须在java代码中完成它。听众基本上是这样的:

Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Change Button Color here, and do other stuff
        Button button = (Button) findViewById(v.getId());
        button.setBackgroundColor(int color);
    }
});

答案 2 :(得分:1)

您可以使用两个背景绘图:一个用于活动,另一个用于非活动。

在所有按钮上添加ClickListeners,并使用setBackgroundResource();方法切换背景。

答案 3 :(得分:0)

这用于xml活动,如按钮: -

<Button
    android:id="@+id/button_id"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="3"
    android:layout_toRightOf="@id/binary_button"
    android:text="@string/oct_button"
    android:onClick="changeColor" 
/>

现在在java类中使用像....

private boolean isChangeColor=true;
public void changeColor(View v)
{
     if(isChangeColor)
     v.setBackgroundColor(Color.BLACK);
     else
     v.setBackgroundColor(Color.WHITE);//use your original color here
     isChangeColor=!isChangeColor;
}