web-dev-qa-db-ja.com

ボタンAndroid:backgroundを別のドローアブルに変更

私はAndroidとJavaに慣れていませんが、質問をすることなく、自分自身を教え、stackoverflowに関する質問へのほとんどの答えを見つけることができました。今まで... 。

これが、クリックすると色をさまざまな色に変更する色付きのボタンがたくさんあります。

たとえば、次のように定義された多くのボタンがあります。

<Button
   Android:id="@+id/button17"
   Android:layout_width="0dp"
   Android:layout_height="fill_parent"
   Android:layout_weight="1"
   Android:background="@drawable/orange_button"
   Android:gravity="center"
   Android:onClick="onClick" />

たとえば、ボタンがクリックされたときに、コードを使用して上記の例を黄色に変更する方法を教えてください。

以下のコードでは、clickedButtonは、背景を変更する必要があるボタンのIDです。

public void onClick(View v) {
    int id=v.getId();
    String clickedButton = getResources().getResourceEntryName(id);

    Change button to Yellow here??

    // Temporary code below to check which button was pressed
    // and convert its number to an integer to eventually access an array

    final TextView tvGameTimer = (TextView) findViewById(R.id.tvGameTimer);
    int buttonNumber = Integer.parseInt(clickedButton.substring(6,8));
    tvGameTimer.setText("" + buttonNumber);

    }

カスタムボタンスタイルを使用してボタンの色を定義しています。

res/drawable/yellow_button.xml
res/drawable/blue_button.xml
res/drawable/red_button.xml
res/drawable/orange_button.xml
res/drawable/green_button.xml

今のところ、ボタンをオレンジから黄色に変更する方法を理解する必要があります。次に、アプリが必要とするときに色を変更するロジックを追加できます。

助けてくれてありがとう。

14
Keith Hirst

あなたが投稿するonClickメソッドは、背景を変更しようとしているのと同じボタンのものだと思います。このコードを使用してください。

  v.setBackgroundResource(R.drawable.yellow_button);

OnClickが同じボタンのメソッドでない場合は、

  findViewById(R.id.button17).setBackgroundResource(R.drawable.yellow_button);
25
Hassan Jawed
Button btn = (Button) findViewById(R.id.button17);
btn.setBackground(this.getResources().getDrawable(R.drawable.yellow_button));

これを試して。

2
amp