2つの画像がある場合、ボタンが選択されているかどうかにかかわらず(セレクターを使用して)画像を切り替えることができます。1つの画像(灰色)でボタンの色を変更する方法は?
しかし、画像が1つだけの場合。 ボタンを選択したときに画像の色を変更できるかどうかを知りたい。 私は4つのボタンを持っており、どのボタンが選択されたのかを示したいだけです。 つまり、画像を選択しないとグレーになり、選択すると元の色に戻ります。 イメージは1つしかありませんか?
2つの画像がある場合、ボタンが選択されているかどうかにかかわらず(セレクターを使用して)画像を切り替えることができます。1つの画像(灰色)でボタンの色を変更する方法は?
しかし、画像が1つだけの場合。 ボタンを選択したときに画像の色を変更できるかどうかを知りたい。 私は4つのボタンを持っており、どのボタンが選択されたのかを示したいだけです。 つまり、画像を選択しないとグレーになり、選択すると元の色に戻ります。 イメージは1つしかありませんか?
が可能です。
という名前drawable
でXML
レイアウトを作るこの
Button mButton1, mButton21, mButton3, mButton4;
int mCurrentId = 0;
mButton1.setOnClickListener(mOnClickListener);
mButton2.setOnClickListener(mOnClickListener);
mButton3.setOnClickListener(mOnClickListener);
mButton4.setOnClickListener(mOnClickListener);
View.OnClickListener mOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
mCurrentId = v.getId();
switch (v.getId()) {
case R.id.button1:
if(mCurrentId == v.getId()){
mButton1.setBackgound(Selectimage);
}else{
mButton1.setBackgound(DefaultImage);
}
case R.id.button2:
if(mCurrentId == v.getId()){
mButton2.setBackgound(Selectimage);
}else{
mButton2.setBackgound(DefaultImage);
}
case R.id.button3:
if(mCurrentId == v.getId()){
mButton3.setBackgound(Selectimage);
}else{
mButton3.setBackgound(DefaultImage);
}
case R.id.button4:
if(mCurrentId == v.getId()){
mButton4.setBackgound(Selectimage);
}else{
mButton4.setBackgound(DefaultImage);
}
break;
}
}
};
を試してみてください。ボタンでtxt.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="#424242"/>
</selector>
:
<Button
.....
android:background="@drawable/txt"
...../>
あなたのと、この私の拡張Buttonクラスを行うことができますonTouchEventのコード。私の例では、背景とテキストの色を変更しているので、背景画像に色合い(カラーフィルタ)を使用して画像の色を変更することができます。
public class MyButton extends Button {
public MyButton(Context context) {
super(context);
}
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public MyButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public void setEnabled(boolean enabled) {
// super.setEnabled(enabled);
if (!enabled)
setBackgroundColor(Color.GRAY);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//when Button is Pressed
if (!isPressed()) {
setBackgroundColor(YOUR PRESSED COLOR);
setTextColor(Color.BLACK);
}else {//when Button Released
setBackgroundColor(<YOUR INACTIVE COLOR>);
setTextColor(Color.BLACK);
}
return super.onTouchEvent(event);
}
}
助けがあれば回答を受け入れることを検討してください。 – W4R10CK