この特定Activity
の場合、ユーザーはじゃんけんゲームでプレーヤー1とプレーヤー2から選択したデストラクタを選択する必要があります。
私はいくつかのアプローチを試しました。最初のアプローチは、選択したものをクリックさせるImageButton
ことでしたが、それを達成するための解決策は見つかりませんでした。
2つ目は、下の画像に示すように、選択したクリック不可を設定してImageButton
変更することでした。Image
そこでは、プレーヤー1には「ロック」が選択され、プレーヤー2にはまだ何も選択されていません。Image
ご覧のとおり、のsを変更するとすぐにImageButton
、境界線が消えます。
Button
このようにステータスを変更します
public void onClickRock1(View v){
choosenDestructor1 = 1;
buttonRock1.setImageResource(R.drawable.rock_clicked);
buttonRock1.setBackgroundColor(getResources().getColor(R.color.button_background_stay_clicked));
buttonRock1.setClickable(false);
buttonPaper1.setImageResource(R.drawable.paper);
buttonPaper1.setBackgroundColor(getResources().getColor(R.color.button_background));
buttonPaper1.setClickable(true);
buttonScissors1.setImageResource(R.drawable.scissors);
buttonScissors1.setBackgroundColor(getResources().getColor(R.color.button_background));
buttonScissors1.setClickable(true);
}
他のすべての5についてはButton
、この方法と同様に同じです。ImageButton
さて、のスタイルをシンプルで上書きするImage
と、カスタムスタイルの境界線がImageButton
消えると思いますが、これは推測に過ぎません。
背景色が異なり、境界線が同じである2番目のカスタムスタイルを作成しましたが、 fromコードImageButton
でそのスタイルを設定する方法がわかりません。ImageButton
だから私の質問は、これを解決するのに最も賢い方法はどれか(私は3番目の方法だと思いますが、おそらく別の方法があると思います)、それが3番目の方法である場合、ImageButton
fromコードのスタイルを設定する方法です。
編集:
rgrochaの答えと同様に、私は次のように自分のselector
(すでに統合されている)を編集しました。custom_imagebutton.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@drawable/rock">
<shape>
<solid
android:color="@color/button_background" />
<stroke
android:width="2dp"
android:color="#FFF716" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:state_selected="true" android:drawable="@drawable/rock_clicked">
<shape>
<solid
android:color="@color/button_background_stay_clicked" />
<stroke
android:width="2dp"
android:color="#FFF716" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:drawable="@drawable/rock">
<shape>
<solid
android:color="@color/button_background" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<corners
android:radius="0dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
そしてonClickRock1
このような方法
public void onClickRock1(View v){
choosenDestructor1 = 1;
buttonRock1.setSelected(true);
buttonPaper1.setSelected(false);
buttonScissors1.setSelected(false);
}
このように解決するとcustom_imagebutton.xml
、それぞれImageButton
(じゃんけん)が作成され、次の問題が発生します。1.境界線が表示されない(これらの境界線が必要なため、重要です)2. Image
isnもうスケーリングされていません(私はこのようにもっと好きなので、これは問題ではありません)
つまり、基本的には、上記で投稿した画像のように見えますが、Image
スケーリングされていないためにsが少し大きくなっています(で、layout.xml
設定しましたscaleType="fitCenter"
)