2

私の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()

私はこれがばかげていることを知っていますが、私はアンドロイドに慣れていないので、どうもありがとう

4

4 に答える 4

1

以下の手順に従ってください-

  1. Button次のようにメイン xml でビューを定義します。

    <Button
    android:id="@+id/search_bt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/button_selector_green"
    android:text="Search"
    android:textColor="@drawable/button_text_color_green"
    />
    
  2. button_selector_green次のように、ドローアブル フォルダーに xml ファイルを作成します。

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/rounded_corner_transparent" android:state_pressed="true"/>
    <!-- pressed -->
    <item android:drawable="@drawable/rounded_corner_green"/>
    <!-- default -->
    </selector>
    
  3. button_text_color_green次のように、ドローアブル フォルダーに xml ファイルを作成します。

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
       android:color="#48b28a" /> <!-- pressed -->
    <item android:state_focused="true"
       android:color="#FFFFFF" /> <!-- focused -->
    <item android:color="#FFFFFF" /> <!-- default -->
    </selector>
    
  4. rounded_corner_transparent次のように、ドローアブル フォルダーに xml ファイルを作成します。

     <?xml version="1.0" encoding="utf-8"?>
     <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
    
     <solid 
      android:color="@android:color/transparent" >
     </solid>
    
     <!-- view border color and width -->
     <stroke
       android:width="1dp"
       android:color="#2b8c68" ></stroke>
    
     <!-- If you want to add some padding -->
     <padding
       android:left="4dp"
       android:top="4dp"
       android:right="4dp"
       android:bottom="4dp"    >
     </padding>
    
     <!-- Here is the corner radius -->
     <corners android:radius="10dp"   >
     </corners>
     </shape>
    
  5. rounded_corner_green次のように、ドローアブル フォルダーに xml ファイルを作成します。

    <?xml version="1.0" encoding="utf-8"?>
    <shape  xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
    
    <solid
    android:color="#48b28a" >
    </solid>
    
    <!-- view border color and width -->
    <stroke
    android:width="1dp"
    android:color="#2b8c68" >
    </stroke>
    
    <!-- If you want to add some padding -->
    <padding
    android:left="4dp"
    android:top="4dp"
    android:right="4dp"
    android:bottom="4dp"    >
    </padding>
    
    <!-- Here is the corner radius -->
    <corners
    android:radius="10dp"   >
    </corners>
    </shape>
    

    これがうまくいくことを願っています。ハッピーコーディング:)

于 2014-06-25T07:48:41.443 に答える