0

Android ボタンにいくつかのプロパティを持たせたい:

  1. Android HoloLight スタイルを持っている
  2. ImageButton として動作 - テキストではなく画像をコンテンツとして持つ
  3. ToggleButton として動作 - オン/オフ状態を切り替えます

したがって、私のコードは現在次のようになっています。

私のxmlファイル:

<ImageButton
    android:id="@+id/button"
    style="@android:style/Widget.Holo.Light.Button.Toggle"
    android:layout_width="70px"
    android:layout_height="70px"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_margin="5dp"
    android:src="@drawable/icon" />

私のJavaファイル:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_file);

    Button button = (ImageButton) findViewById(R.id.button);

    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.v(log, "button pressed");

            if (skillsButton.isSelected()) {
                Log.v(log, "button is unselected");
                button.setSelected(false);
            } else {
                Log.v(log, "button is selected");
                button.setSelected(true);
            }
        }
    });
}

コードを実行してボタンをクリックすると、ボタンの説明として画像が表示され、Android の HoloLight ToggleButton のように見えますが、ボタンを押してもオンとオフが切り替わりません (青いライトは点灯しません)。の上)。

ボタンの isSelected() ステータスが LogCat で変化していることがわかります。

私が欲しいものに対する解決策はありますか?

また、私が試した限りでは、Android HoloLight をテーマにしたボタンの「色」は明るい灰色に固定されています。この色を別の色、できれば白に変更する方法はありますか?

4

2 に答える 2

0

これは私がやったことなので、一度に1つだけを選択できるようButtonsに、トグルする画像を2つまたは3つ持つことができます。RadioGroup

それを作るToggleButton

<ToggleButton
android:id="@+id/button"
style="@android:style/CustomButton"   // Note the style
android:layout_width="70px"
android:layout_height="70px"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_margin="5dp" />

上記で参照するスタイルを作成しますres/styles

<style name="CustomButton" parent="@android:style/Widget.CompoundButton">  // you can change the parent here depending on what you need
    <item name="android:background">@drawable/icon</item>
    <item name="android:textOff"></item>
    <item name="android:textOn"></item>
    //  add other properties if you need
</style>

私の@drawable/cold_button場合、セレクターは押されると変化するため、セレクターを参照しますが、単に画像にすることができますbackground

于 2013-07-25T19:00:37.290 に答える
0

ボタンに tow drawable を提供することをお勧めします。「オン」状態のドローアブルは右側が青色で、「オフ」状態のボタンは左側が青色です。その後、以下のようにボタンに OnTouchListener を設定する必要があります。

@Override
public boolean onTouch(View v, MotionEvent event) {
    if(event.getAction()==MotionEvent.ACTION_DOWN){
        float x=event.getX();
        if(x<=v.getWidth()/2){
            v.setBackgroundResource(R.drawable.off);
            state=0;
        }else{
            v.setBackgroundResource(R.drawable.on);
            state=1;
        }
    }
    return false;
}
于 2013-07-25T19:51:52.477 に答える