オンとオフの2つの状態を持つスライドボタン(=スイッチのようなもの)を作成したいので、ユーザーはボタンを押してスライドさせて状態を変更する必要があります(スライダーのロック解除に似ていますが、画面全体を横切ることはありません)。あなたはそれを行う方法について何か考えがありますか?私は本当に答えを見つけようとしましたが、成功しませんでした。
どうもありがとう!
ターゲットSDKが4.0(アイスクリームサンドイッチ)よりも高い場合は、 スイッチコンポーネント が最善の解決策のようです。したがって、同じ問題に直面する他の人のためにそれを見てください。 :)
//レイアウトデザインで以下の行
<RelativeLayout Android:layout_width="wrap_content" Android:id="@+id/rl_onoff"
Android:layout_height="wrap_content">
<ImageView Android:id="@+id/on_btn" Android:layout_width="80dp" Android:layout_height="40dp" Android:src="@drawable/on_btn" Android:visibility="visible"></ImageView>
<ImageView Android:id="@+id/off_btn" Android:layout_width="80dp" Android:layout_height="40dp" Android:src="@drawable/off_btn" Android:visibility="invisible"></ImageView>
</RelativeLayout>
//アクティビティでこれを呼び出します
ImageView mNotification_on_btn=(ImageView)findViewById(R.id.on_btn);
ImageView mNotification_off_btn=(ImageView)findViewById(R.id.off_btn);
mNotification_on_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mNotification_on_btn.setVisibility(View.GONE);
mNotification_off_btn.setVisibility(View.VISIBLE);
}
});
mNotification_off_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mNotification_off_btn.setVisibility(View.GONE);
mNotification_on_btn.setVisibility(View.VISIBLE);
}
});
//これはiphoneスタイルのようにオンオフトグルボタンに切り替わります
これは、チェックボックスまたはToggleButtonを使用して実現できます。以下は例です
xmlファイル
<CheckBox
Android:id="@+id/check_on_of"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:button="@drawable/chec_box_on_off"
/>
ドローアブルchec_box_on_offファイルは
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/check_box_on" Android:state_checked="true"/>
<item Android:drawable="@drawable/check_box_off" Android:state_checked="false"/>
</selector>
オンオフボタンのようになり、チェックボックスがオンかオフかを確認することもできます。
Javaコードは
CheckBox check = (CheckBox)findViewById(R.id.check_on_of);
check.isChecked();
同様に、ToggleButtonを使用してこれを実現することもできます。