私のAndroidアプリには、背景が緑色の角丸長方形のボタンがあります。私は.xmlファイルを使用してこれを行いました
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp"
android:shape="rectangle" >
<solid android:color="#B5D397" />
<corners
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
</shape>
と
android:background="@drawable/rounded_btn"
レイアウトファイルで
しかし、ボタンを押しても効果が見られなかったので(色の変化はありません)、使用しました
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Button view = (Button) v;
view.getBackground().setColorFilter(0x77000000, PorterDuff.Mode.SRC_ATOP);
ボタンを押すと、ボタンの色が濃い緑色に変わります。ここまではすべて正常に動作していますが、ボタンを離した後もボタンの色が濃い緑色のままであることが問題です。押す前と同じようにしたい.xmlファイルでセレクターを使用するといういくつかの例を参照しました。
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:color="#c0c0c0"
android:state_selected="true"/>
<item
android:color="#ffffff"
android:state_pressed="true"/>
<item
android:color="#9A9A9A"
android:state_focused="false"
android:state_pressed="false"
android:state_selected="false"/>
</selector>
これも必要android:background="@drawable/btn_state"
ですが、私はすでに使用していますandroid:background=@drawable/rounded_btn
両方の効果を一緒に与える方法
私も使ってみましたOnTouchListener
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// show interest in events resulting from ACTION_DOWN
if(event.getAction()==MotionEvent.ACTION_DOWN) return true;
// don't handle event unless its ACTION_UP so "doSomething()" only runs once.
if(event.getAction()!=MotionEvent.ACTION_UP) return false;
doSomething();
button.setPressed(true);
return true;
}
});
しかし、これは私の方法を無効にOnclickListener()
し、使用したくありませんOnTouchListener()
私はこれがばかげていることを知っていますが、私はアンドロイドに慣れていないので、どうもありがとう