此刻我的按鈕不起作用。前兩次被按下的所有按鈕都會受到影響,而不僅僅是被按下的按鈕。爲什麼setAlpha()作用於我的所有按鈕,而setImageResource()只作用於一個按鈕?
交換:
seatButton[i].setAlpha(255);
爲:
seatButton[i].setImageResource(0x7f020007)
我的代碼工作!只有我按下的按鈕纔會生效。爲什麼?
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
table = new Table(); //Creates Table
seatButton = new ImageButton[10]; //Creates Array of buttons
seatStats = new TextView[10]; //Creates array for stat panels
//Creates longClickListener, used for players to sit in or out.
longClickListener = new View.OnLongClickListener()
{
@Override
public boolean onLongClick(View v)
{
for(int i=0; i<10; i++)
{
//Each seat[i] will correspond with each imageButtoni+1
if(v.getId() == (getResources().getIdentifier("imageButton" + (i+1), "id", "en.deco.android.livehud")))
{
//If the seat is empty fill it, place a player in the seat and change the button from translucent to opaque
if(table.seats[i].getState().equals("empty"))
{
seatButton[i].setAlpha(255);
//seatButton[i].setImageResource(0x7f020000);
table.seats[i].sit(new Player());
seatStats[i].setVisibility(View.VISIBLE);
Toast.makeText(GUI.this, table.seats[i].getState(), Toast.LENGTH_SHORT).show();
}
//If the seat is full, empty it
else
{
seatButton[i].setAlpha(80);
//seatButton[i].setImageResource(0x7f020007);
table.seats[i].sitOut();
seatStats[i].setVisibility(View.INVISIBLE);
Toast.makeText(GUI.this, table.seats[i].getState() + i, Toast.LENGTH_SHORT).show();
}
}
}
return true;
}
};
//Assigns the buttons and stats panels defined in the layout xml to their appropiate java arrays. Also sets clickListeners to buttons.
for(int i = 0; i < 10; i++)
{
seatButton[i] = (ImageButton) findViewById(getResources().getIdentifier("imageButton" + (i+1), "id", "en.deco.android.livehud"));
seatStats[i] = (TextView) findViewById(getResources().getIdentifier("textView" + (i+1), "id", "en.deco.android.livehud"));
seatButton[i].setOnLongClickListener(longClickListener);
seatButton[i].setAlpha(80);
}
感謝這確實是一個錯誤,儘管按鈕的前兩次點擊仍然存在問題。 – Deco
用可能不正確的setAlpha調用擴展我的答案。 –
Alpha值是從ImageView/ImageButtons的0..255開始的整數。我最後一次嘗試涉及用Alpha動畫替換setAlpha。不幸的是這也失敗了。第一次點擊會很好,但第二次會影響所有按鈕。開始認爲Alpha方法本身可能有點狡猾。 – Deco