2

スイッチボタンを使用したいのですが、クリック時のステータス変更を無効にしたいので、これをドラッグオプションのみに変更させてください。何もしないようにリスナーを設定しようとしonclickますが、ボタンをクリックすると常に状態が変わります。

変更ステータスを無効にすることを知っている人はいますonClickか?

4

5 に答える 5

3

スワイプでスイッチの状態のみを変更したい場合は、次のようにします。

 switchbutton = view.findViewById(R.id.switch2);
    switchbutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            switchbutton.setChecked(!switchbutton.isChecked());
        }
    });
于 2018-01-02T12:27:37.307 に答える
1

スイッチ ウィジェットを使用して customSwitch クラスを作成し、クリックを検出したときに onTouchEvent メソッドをオーバーライドして true を返す必要があります。

public boolean onTouchEvent(MotionEvent ev) {
    boolean response;
    switch (ev.getAction()){
        case MotionEvent.ACTION_DOWN:
            x = ev.getX();
            response = super.onTouchEvent(ev);
            break;
        case MotionEvent.ACTION_UP:
            response = Math.abs(x - ev.getX()) <= 10 || super.onTouchEvent(ev);
            break;
        default:
            response = super.onTouchEvent(ev);
            break;
    }
    return response;
}

一部のデバイスでは、クリックではなく 3 または 6 ピクセル程度の移動イベントが報告されるため、10 という数値は許容値です。これを使用して制御します。この動きが通常のスイッチ動作を通過するようにします。

x をクラス レベル変数として宣言します。デフォルト値は 0 です。MotionEvent.ACTION_DOWN は常に最初に呼び出されるため、MotionEvent の X 軸に開始値を持つ x があります。

于 2016-10-01T05:12:53.493 に答える
0
//onClickListener
public void tglOnClick(View v) {
    ToggleButton tgl = (ToggleButton) v;

    //do something based on toggle status after clicking
    if (tgl.isChecked())
        //do something
    else
        //do something else

    //revert button state so that it can be controlled by some external logic
    tgl.setChecked(!tgl.isChecked());

}

これは私にとってはうまくいきました。私の場合、トグル ボタンをクリックするとサービスにリクエストが送信され、サービスが「OK」と応答した場合、メッセージ ハンドラはトグル ボタンの正しい状態を設定しました。

于 2016-03-02T20:05:14.513 に答える