ボタンが1つだけのプログラムを書いています。最初は、ボタンはデフォルトの色です。ボタンをクリックすると背景色が赤に変わり、もう一度クリックすると背景色がデフォルトの色に変わります。myButton.setOnClickListener(new OnClickListener(){}
メソッドでコードを書くことに関する提案はありますか? ありがとう
質問する
3926 次
3 に答える
1
// Class member variable
private Drawable defaultDrawable;
myButton.setOnClickListener(new OnClickListener()
{
if(defaultDrawable == null)
{
defaultDrawable = myButton.getDrawable();
myButton.setBackgroundColor(Color.BLUE);
}
else
{
myButton.setBackgroundDrawable(defaultDrawable);
defaultDrawable=null;
}
}
ロジックを確実に改善して、読みやすくすることができます。
また、2 つの状態を持つ ToggleButton を単純に使用することもできます。各状態には、xml ファイルで指定できる独自の背景描画可能/色があります。リスナーは必要ありません。
于 2012-07-04T19:05:45.807 に答える
0
あなたは簡単にこれを行うことができます:
boolean isSelected = false;
int color1 = R.color.mycolor1;
int color2 = R.color.mycolor2;
myButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(isSelected){
btn.setBackgroundColor( color1 );
} else {
btn.setBackgroundColor( color2 );
}
isSelected = !isSelected;
}
});
もう1つの解決策は、ボタンクラスを拡張して、isSelectedフラグをメンバークラスとして保存することです。このようにして、この種のボタンを必要な場所で再利用できます。
于 2012-07-04T18:59:48.930 に答える
0
次のように、現在のテーマの R.attr.buttonStyle から色を取得できます。
public static int getAttrResId( Context context, int attrId ) {
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute( attrId, outValue, true );
return outValue.resourceId;
}
于 2012-07-04T19:08:15.180 に答える