2013-05-09 5 views
11

私はアンドロイドアプリでデフォルトのseekbarを持っています。私は、seekbarthumbが保持されているときに黄色に変わることに気づいた。代わりに、私はそれが開催されたときに青になることを望む。これはどうすればできますか?私はこれが基本的な質問である場合は謝罪し、私はアンドロイドの開発に新しいです。ありがとう。シークバーで親指の色を変更する方法は?

Drawable thumb = getResources().getDrawable(R.drawable.myThumb); 
SeekBar mSeekBar = (SeekBar) findViewById(R.id.mySeekBar); 
mSeekbar.setThumb(thumb); 

それとも、親指でを設定することができます:デフォルトの親指が気に入らない場合は

答えて

13

、あなたは、その後のようなもので、コードに親指を設定することができ、独自のDrawableを作成する必要があります

<SeekBar 
    ... 
    android:thumb="@drawable/seek_thumb" /> 

実際の描画可能ファイルは、イメージ、シェイプ、または可能であれば他の種類の描画可能ファイルにすることができます。サムを押したときに見た目を変えたい場合は、State List Drawableを作成します。

+0

デフォルトの親指を使用します。私はちょうど保持するときに変更する色を変更したい。 –

+0

残念ながら、デフォルトサムの押された色は、デフォルトサムの一部です。変更したい場合は、自分で実装する必要があります。私は[非ホロのデフォルト画像をここに見つけました](https://github.com/android/platform_frameworks_base/tree/master/core/res/res)ので、それらを使って良いスタートを得ることができるはずです。 –

+0

これはいくつかの状況では便利なテクニックですが、独自のDrawableを作成する必要はありません。 API 16+については、@ zavidovychの答えをご覧ください。 – LarsH

25

使用イメージフィルタ(シークバーを含む)は、デフォルトの状態一覧ドロウアブルの色を変更するには:

// Change seekbar color to green. 
    SeekBar sb = (SeekBar) findViewById(R.id.seekBar1); 
    sb.getProgressDrawable().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY); 
    sb.getThumb().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY); 

方法getThumb(ジェリービーン)16+ API以降のみ使用可能です。

+0

zavidovych、これはxmlでできますか? – Brabbeldas

+7

私の場合、 'sb.getProgressDrawable()。setColorFilter(getResources()。getColor(R.color.my_color)、PorterDuff.Mode.SRC_ATOP); ' – CrimsonX

+1

@CrimsonXを使用する方が良いでしょう。 – MaSza

11

追加のスタイリングは必要ありません。 Androidはxmlでサポートしています。 シークバーにandroid:thumbTint = "@ color/yourColor"を追加するだけです。

たとえば、

<SeekBar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:max="100" 
    android:thumbTint="@color/red" 
    android:progress="0" /> 
+10

api <21の場合はどうですか?この@JohnShelley –

+2

はAPPCOMPATのテーマを使用して、すべてのAPIレベルのために働く...のstyles.xmlで : '<スタイル名= "AppTheme.BlueSeekBar" 親= "Widget.AppCompat.SeekBar"> <項目名=」 colorAccent "赤> @色/レイアウトで ' : '<シークバー アンドロイド:layout_width =" match_parent」 アンドロイド:layout_height = "wrap_content" アンドロイド:テーマ= "@スタイル/ AppTheme.BlueSeekBar"/> ' – Breeno

+0

@Breenoこれは動作しますが、親API(古いAPIの場合)のみです。あなたはシークバーの残りの部分をどのようにスタイルしますか? – Stan

関連する問題