讓我澄清這個問題。我有4個圖像按鈕,我想更改按下的按鈕的圖標,然後如果我按另一個按鈕,所以下一個按鈕應該更改,最後一個應該返回到其上一個圖標。如何在Android中動態更改按下的ImageButton的圖標?
注意:該示例是Instagram。當你點擊每個圖標時,你會看到一些灰色圖標,它會變成黑色。當你點擊另一個時,最後一個變成灰色,新的變成黑色。
讓我澄清這個問題。我有4個圖像按鈕,我想更改按下的按鈕的圖標,然後如果我按另一個按鈕,所以下一個按鈕應該更改,最後一個應該返回到其上一個圖標。如何在Android中動態更改按下的ImageButton的圖標?
注意:該示例是Instagram。當你點擊每個圖標時,你會看到一些灰色圖標,它會變成黑色。當你點擊另一個時,最後一個變成灰色,新的變成黑色。
您可以使用下面的代碼創建在繪製文件夾中的XML文件,並使用它作爲一個圖像繪製:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_pressed_yellow"
android:state_pressed="true" />
<item android:drawable="@drawable/button_focused_orange"
android:state_focused="true" />
<item android:drawable="@drawable/button_normal_green" />
<item android:drawable="@drawable/selected_icon" android:state_selected="true"/>
</selector>
,並使用不同的圖像,這取決於按下狀態。
public class CamTestActivity extends Activity implements View.OnClickListener{
Button b1,b2,b3,b4;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1 = (Button)findViewById(R.id.btn1);
b2 = (Button)findViewById(R.id.btn2);
b3 = (Button)findViewById(R.id.btn3);
b4 = (Button)findViewById(R.id.btn4);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
b3.setOnClickListener(this);
b4.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id){
case R.id.btn1:
pressbtn1();
break;
case R.id.btn2:
pressbtn2();
break;
case R.id.btn3:
pressbtn3();
break;
case R.id.btn4:
pressbtn4();
break;
}
}
private void pressbtn4() {
b1.setBackgroundColor(getResources().getColor(R.color.color_gray));
b2.setBackgroundColor(getResources().getColor(R.color.color_gray));
b3.setBackgroundColor(getResources().getColor(R.color.color_gray));
b4.setBackgroundColor(getResources().getColor(R.color.color_black));
}
private void pressbtn3() {
b1.setBackgroundColor(getResources().getColor(R.color.color_gray));
b2.setBackgroundColor(getResources().getColor(R.color.color_gray));
b3.setBackgroundColor(getResources().getColor(R.color.color_black));
b4.setBackgroundColor(getResources().getColor(R.color.color_gray));
}
private void pressbtn2() {
b1.setBackgroundColor(getResources().getColor(R.color.color_gray));
b2.setBackgroundColor(getResources().getColor(R.color.color_black));
b3.setBackgroundColor(getResources().getColor(R.color.color_gray));
b4.setBackgroundColor(getResources().getColor(R.color.color_gray));
}
private void pressbtn1() {
b1.setBackgroundColor(getResources().getColor(R.color.color_black));
b2.setBackgroundColor(getResources().getColor(R.color.color_gray));
b3.setBackgroundColor(getResources().getColor(R.color.color_gray));
b4.setBackgroundColor(getResources().getColor(R.color.color_gray));
}
}
我不想改變背景顏色。我想完全改變圖標。有每個按鈕1的2個圖標是灰色的,1個是黑色的。我想要將圖標1變爲黑色時,點擊(其餘灰色),圖標2變爲黑色(其餘灰色)等等 – Amin
因爲我改變了顏色..您可以更改圖標。 Like b1.setBackgroundColor(getResources()。getColor(R.color.color_gray)); –
Java代碼:
public void onAnyButtonCLick(View view)
{
for (int i = 0; i < parent_layout.getChildCount(); i++) {
View v = parent_layout.getChildAt(i);
// Check v is button
if(v instanceof Button)
{
// set all button with grey color background
v.setBackgroundColor(getResources().getColor(R.color.color_gray));
}
} // loop ends
// color the current click button with black.
view.setBackgroundColor(getResources().getColor(R.color.color_black));
} // end of click
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent_layout"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="2">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="First Button"
android:onClick="button_click"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Second Button"
android:onClick="button_click"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Third Button"
android:onClick="button_click"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Forth Button"
android:onClick="button_click"/>
</LinearLayout>
// Hope it Helps !!
使用不同的可繪製了按鈕的不同狀態。 – SripadRaj
@SripadRaj我是新來的android編程可以給我一個例子嗎? :) – Amin
你可以檢查這個解決方案嗎?https://stackoverflow.com/questions/32534076/what-is-the-best-way-to-do-a-button-group-that-can-be-selected- and-activate-inde – ViramP