0

こんにちは私はこのようなUI要件を持っています-

4つのボタンがあります:Popular、、、、A-zNearByCategory

それらのいずれかを一度に押すことができます。Popularボタンが押された場合、残りのボタンは押されていないように見えると仮定します。

残りの3つのボタンのいずれかを押すまで、このままにしておきたいと思います。3つのうちのいずれかを押すと、その特定のボタンが強調表示され、残りのボタンは正常になります。

4

2 に答える 2

2

そのためには、ラジオボタンを使用する必要があり、さまざまな状態に対してさまざまなドローアブルを定義するためのセレクターが必要です。セレクターを使用する方法は次のとおりです。button_selectorという名前を付けて、ドローアブルフォルダに配置します。また、通常の状態と押された状態として、ボタンに2つの異なるドローアブルを用意する必要があります。buttonおよびbutton_selectedという名前を付けます。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:drawable="@drawable/button_selected"></item>

    <item android:state_checked="true" android:drawable="@drawable/button_selected"></item>
    <item android:drawable="@drawable/button"></item>
</selector>

ラジオボタンは;

<RadioGroup
    android:id="@+id/radio_group_card_selector"
    android:layout_width="wrap_content"
    android:layout_height="28dp"
    android:layout_gravity="center_horizontal|center_vertical"
    android:gravity="center_horizontal"
    android:orientation="horizontal" >

    <RadioButton
        android:id="@+id/radio_group_highlights"
        android:layout_width="69dp"
        android:layout_height="28dp"
        android:layout_gravity="left"
        android:background="@drawable/button_selector"
        android:button="@null"
        android:gravity="center_vertical|center_horizontal"
        android:text="@string/Highlights"
        android:textColor="#21596c"
        android:textSize="10sp"
        android:textStyle="normal" >
    </RadioButton>

    <RadioButton
        android:id="@+id/radio_group_products"
        android:layout_width="69dp"
        android:layout_height="28dp"
        android:layout_gravity="left"
        android:background="@drawable/button_selector"
        android:button="@null"
        android:gravity="center_vertical|center_horizontal"
        android:text="@string/All"
        android:textColor="#21596c"
        android:textSize="10sp"
        android:textStyle="normal" >
    </RadioButton>

    <RadioButton
        android:id="@+id/radio_group_mycards"
        android:layout_width="69dp"
        android:layout_height="28dp"
        android:background="@drawable/button_selector"
        android:button="@null"
        android:checked="true"
        android:gravity="center_vertical|center_horizontal"
        android:text="@string/My_Cards"
        android:textColor="#21596c"
        android:textSize="10sp"
        android:textStyle="normal" >
    </RadioButton>
</RadioGroup>

したがって、そのようにして、RunTimeでコードを処理する必要はありません。

編集:ドローアブルの代わりに色のみを使用したい場合は、それがどのように機能するかをよりよく理解するために以下のコードを使用できます。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true"> <!-- pressed -->
    <shape>
        <gradient
            android:startColor="#058CF5"
            android:centerColor="#0273ED"
            android:centerY="0.75"
            android:endColor="#015DE6"
            android:angle="270" />
    </shape>    
</item>

<item android:state_checked="true"> <!-- focused -->
    <shape>
        <gradient
            android:startColor="#058CF5"
            android:centerColor="#0273ED"
            android:centerY="0.75"
            android:endColor="#015DE6"
            android:angle="270" />
    </shape>    
</item>

<item>      <!-- default -->
    <shape>
        <solid android:color="#E6E6E6" />
    </shape>
</item>

于 2013-01-30T10:44:02.950 に答える
0
private TextView[] viewsArray;
public void onCreate(Bundle bundle){
      super.onCreate(bundle);
      setContentView(R.layout.mylayout);
      TextView[] array // all your buttons
      for (TextView view : array) {
        view.setOnClickListener(mListener);
      }

     viewsArray = array;
}
private OnClickListener mListener = new OnClickListener(){
     public void onClick(View view){
                    resetViews();
                    view.setBackgroundResource(R.drawable.selected);
    }
};
private void resetViews(){
 for(TextView view : viewsArray){
         view.setBackgroundResource(R.drawable.notselected);
  }
}
于 2013-01-30T10:41:19.323 に答える