私は、境界線を持っているがボタンが押されたときに背景の色合いが異なるボタンと、ボタンの背景の色を変更する機能を持つボタンを作ろうとしています。私はadding a borderがそれをシェイプに割り当てていることを知っています。タップの状態はさまざまな項目のセレクタを通っていますが、ボタンの背景色はユーザが設定することになっています。タップ状態のユーザー設定可能なボタンを追加するにはどうすればよいですか?
タップ状態がなければ、私は、ユーザーがちょうど行って、私の形状の背景色を変更することを可能にすることができる午前:
GradientDrawable bgShape = (GradientDrawable) btn.getBackground();
//color value is obtained from shared preferences
if (sharedPref.contains(pref_color)) {
String color = sharedPref.getString(pref_color, "");
bgShape.setColor(Color.parseColor(color));
}
しかし、私のボタンがあることを行っている場合、私は最初の行を行うことはできませんセレクタが割り当てられました。私は描画可能な形状への参照をどのように得るのか分かりません。参考のため
、私のボタンの境界線の形状は次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="5px" android:color="#ffffff" />
</shape>
セレクタは次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_press" android:state_pressed="true"/>
<item android:drawable="@drawable/button_border" />
</selector>
は、これを実現する方法はありますか?
明確にするために、私はこのドロアブルを割り当てますか? – Jason
はいと色を変更した後setBackgroundをもう一度呼び出します。 –
タップ状態をどうやって扱うのですか?私はまだセレクターをどこかで使用していますか? – Jason