簡體   English   中英

同時更改按鈕的背景和文本顏色

[英]Change background and text color of the button at the same time

我想在按下按鈕時更改按鈕背景及其文本顏色。

請檢查我的以下項目,並給我您的建議...

這是我的MainActivity.java

package com.example.dynamicbutton;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    LinearLayout myLayout = (LinearLayout) findViewById(R.id.layout);
    myLayout.setPadding(0, 10, 0, 30);
    Button[] btn = new Button[5];
    for(int i=0; i<5; i++)
    {
        btn[i] = new Button(this);
        btn[i].setId(i);
        btn[i].setText("Dynamic Button" + i);
        btn[i].setPadding(5, 5, 5, 5);
        btn[i].setTextSize(15);
        if (i % 2 == 0)
                    {
                         btn[i].setBackgroundResource(R.drawable.bluebutton_background);
            btn[i].setTextColor(getResources().getColor(R.drawable.blue_text_color));

                    }
        else{
            btn[i].setBackgroundResource(R.drawable.graybutton_background);
            btn[i].setTextColor(getResources().getColor(R.drawable.gray_text_color));

        }
        myLayout.addView(btn[i]);

    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

activity_main.xml (布局)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context=".MainActivity" >

<LinearLayout
    android:id="@+id/layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#FFFFFF"
    android:orientation="vertical" >

</LinearLayout>

</LinearLayout>

繪畫:

bluebutton_background.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item 
        android:state_focused="true" 
        android:drawable="@drawable/orangebutton"
        />
    <item 
        android:state_pressed="true" 
        android:drawable="@drawable/orangebutton"
        />
    <item android:drawable="@drawable/bluebutton"/>

</selector>

graybutton_background.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_focused="true" android:drawable="@drawable/orangebutton"/>
    <item android:state_pressed="true" android:drawable="@drawable/orangebutton"/>
    <item android:drawable="@drawable/graybutton"/>

</selector>

gray_text_color.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_focused="true" android:color="#f4f4f4"/>
    <item android:state_pressed="true" android:color="#242425"/>
    <item android:color="#f4f4f4"/>

</selector>

blue_text_color.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_focused="true" android:color="#242425"/>
    <item android:state_pressed="true" android:color="#242425"/>
    <item android:color="#242425"/>

</selector>

最好的祝福

您可以使用onClickListener()方法。

請嘗試以下步驟:

  1. 將您的按鈕數組聲明為

    final Button [] btn = new Button [5];

  2. 在for循環中聲明最終的int j

    最終整數j = i;

  3. 將以下代碼放在for循環的if else部分之后

    btn [i] .setOnClickListener(new OnClickListener(){

      @Override public void onClick(View v) { // TODO Auto-generated method stub if(btn[j].getTextColors().getDefaultColor() == Color.parseColor("#242425")){ btn[j].setTextColor(getResources().getColor(R.drawable.gray_text_color)); btn[i].setBackgroundResource(R.drawable.graybutton_background); } else { btn[j].setTextColor(getResources().getColor(R.drawable.blue_text_color)); btn[i].setBackgroundResource(R.drawable.bluebutton_background); } } }); 

最終代碼如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    LinearLayout myLayout = (LinearLayout) findViewById(R.id.layout);
    myLayout.setPadding(0, 10, 0, 30);
    final Button[] btn = new Button[5];                                   // 1
    for(int i=0; i<5; i++)
    {
        final int j = i;                                                  // 2
        btn[i] = new Button(this);
        btn[i].setId(i);
        btn[i].setText("Dynamic Button" + i);
        btn[i].setPadding(5, 5, 5, 5);
        btn[i].setTextSize(15);
        if (i % 2 == 0)
                    {
                         btn[i].setBackgroundResource(R.drawable.bluebutton_background);
            btn[i].setTextColor(getResources().getColor(R.drawable.blue_text_color));

                    }
        else{
            btn[i].setBackgroundResource(R.drawable.graybutton_background);
            btn[i].setTextColor(getResources().getColor(R.drawable.gray_text_color));

        }
        myLayout.addView(btn[i]);

    }

    btn[i].setOnClickListener(new OnClickListener() {                     // 3

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                if(btn[j].getTextColors().getDefaultColor() == Color.parseColor("#242425")){
                    btn[j].setTextColor(getResources().getColor(R.drawable.gray_text_color));
                    btn[i].setBackgroundResource(R.drawable.graybutton_background);
                } else {
                    btn[j].setTextColor(getResources().getColor(R.drawable.blue_text_color));
                    btn[i].setBackgroundResource(R.drawable.bluebutton_background);
                }
            }
        });
}

我在圖片中解釋了我的意思。

Dynamic_Button_Image

我將需要同時更改background_imagetextColor按鈕。

我從選擇器標簽中使用了我的background_image

另外,當按下按鈕時,我使用了選擇器標簽來更改按鈕的textColor

當我按下按鈕時, background_image發生變化,但是textColor只是默認

.xml文件的值( blue_text_color.xmlgray_text_color.xml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM