2012-03-11 21 views
3

一つ次のようにXMLでシークバーを作成することができます... アンドロイド:プログラムでのためのmaxHeightパラメータを設定するプログレスバー/シークバー

<SeekBar xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/bpseekbar" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="3dp" 
     android:max="100" 
     android:maxHeight="8dp" 
     ... 

今、私は私が(画面の解像度に基づいてのmaxHeightを調整する必要があるため、プログラムでこれをやりたい

はい、私はそれをしてはいけないことを知っていますが、私はこれに正当な理由があります)。 maxHeightの設定方法がわからないこと以外は、プログラムでパラメータを設定することに問題はありません。私はAttributesを使用する必要があるように感じますが、正確にはどのように見つけられませんでした。何かヒント?

答えて

4

直接可能ではありません。 SeekBar(実際にはSeekBarが拡張するProgressBar)はXMLレイアウトの属性からのみmaxHeightを取得しますが、対応するメソッドはありません。

さらに、ProgressBarは、setProgressDrawableの呼び出しでmaxHeightを少なくともdrawableの高さに増加します。これを利用することができます。

また、SeekBarを拡張し、独自のonMeasureメソッドを提供することもできます。これは実際にmaxHeightが使用される場所です。拡張されたSeekBarをxmlレイアウトで使用することができます。

+0

私はサブクラスのシークバーです。 onmeasureをオーバーライドし、max(mymax、onmeasureheight)を高さに渡してうまくいきますか? –

+0

maxheightを上書きしますか?あなたが意味することに依存します。 –

+0

する必要があります。 AndroidのProgressBar.onMeasureのソースをチェックして、mMaxHeightがどのように使用されているかを確認し、同様にmax height値を使用します。 –

関連する問題