web-dev-qa-db-ja.com

クライアントによるシークバーの変更を無効にする

必要に応じて進行状況を変更するSeekBarがありますが、ユーザーが手動で変更できるようにしたくありません。

私はこのようにSeekBarを設定しようとしました:

<SeekBar
        Android:id="@+id/seekBar1"
        Android:layout_width="match_parent"
        Android:layout_height="65dp"
        Android:layout_alignParentTop="true"
        Android:layout_centerHorizontal="true"
        Android:layout_marginTop="78dp"
        Android:progress="10"
        Android:max="100"
        Android:clickable="false"
        Android:thumb="@drawable/transparent"
        Android:progressDrawable="@drawable/customprogressbar" />

しかし、それは機能しません。

これどうやってするの?


これは、多かれ少なかれ、これがクライアントによってどのように認識されるかの例です。

SeekBarがどのセクションになるかによって、将来的に背景画像と進行状況を変更する必要があるため、カスタムスタイルを使用しました。

全てに感謝!

No given description by asker

21
Shudy

あなたができることの一つは、seekbar.setEnabled(false)のように、シークバーを無効にすることです

そうすることで、フレームワークはユーザーからのタッチイベントを受け入れなくなり、コードを通じてのみ進捗レベルを変更できます。

これがお役に立てば幸いです。

36
Arjun Vekariya

Android:enabled = "false"を使用できますが、無効化効果 [シークバーを暗くする]と表示されます。

したがって、親指のアクティビティに応答せずにシークバーを有効にして表示する場合は、以下に示すように、trueを返すタッチイベントハンドラーを実装します。

seekBar.setOnTouchListener(new OnTouchListener(){
  @Override
  public boolean onTouch(View v, MotionEvent event) {
    return true;
 }
});
51
Srikanth P

CustomSeekBarクラスのonTouchメソッドからfalseを返すだけです。

これがうまくいくことを願っています!

2
Pankaj Kumar