私activity_main.xml
は下にあります、あなたが見るように、高さは40ディップに設定されています。
MyEclipseでは、次のようになります。
しかし、携帯電話で実行すると、次のようになります。
だから私の質問は、プログレスバーの実際の高さが私が設定したものではないのはなぜですか?プログレスバーの高さを上げる方法は?
私activity_main.xml
は下にあります、あなたが見るように、高さは40ディップに設定されています。
MyEclipseでは、次のようになります。
しかし、携帯電話で実行すると、次のようになります。
だから私の質問は、プログレスバーの実際の高さが私が設定したものではないのはなぜですか?プログレスバーの高さを上げる方法は?
最も簡単な解決策は次のようになると思います。
mProgressBar.setScaleY(3f);
xmlファイルのandroid:scaleY = "8"
このチュートリアルから:
<style name="CustomProgressBarHorizontal" parent="android:Widget.ProgressBar.Horizontal">
<item name="android:progressDrawable">@drawable/custom_progress_bar_horizontal</item>
<item name="android:minHeight">10dip</item>
<item name="android:maxHeight">20dip</item>
</style>
次に、スタイルをプログレスバー以上に適用し、テーマのデフォルトスタイルをオーバーライドして、アプリのすべてのプログレスバーを自動的にスタイル設定します。
スクリーンショットに表示されている違いは、電話/エミュレーターが異なるAndroidバージョンを使用しているためです(最新はICS(Holo)のテーマ、上は元のテーマです)。
これを使って
style="@android:style/Widget.ProgressBar.Horizontal"
他の回答で述べたように、Holo.Lightを使用するようにプログレスバーのスタイルを設定しているようです。
style="@android:style/Widget.Holo.Light.ProgressBar.Horizontal"
これがお使いの携帯電話で実行されている場合は、おそらく3.0以降のデバイスです。ただし、エミュレータは「デフォルト」のプログレスバーを使用しているように見えます。
style="@android:style/Widget.ProgressBar.Horizontal"
おそらく、画面キャプチャの作成の間にスタイルを「デフォルト」のプログレスバーに変更しましたか?残念ながら、プロジェクトでHolo.Lightプログレスバーを使用している場合、2.xデバイスは自動的にデフォルトで「デフォルト」のプログレスバーに戻りません。クラッシュするだけです。
本当にデフォルトのプログレスバーを使用している場合は、提案されているように最大/最小の高さを設定すると問題なく機能します。ただし、Holo.Light(またはHolo)バーを使用している場合は、最大/最小の高さを設定しても機能しません。これは、最大/最小の高さを25および100ディップに設定した場合の出力例です。
最大/最小を25ディップに設定:
最大/最小を100ディップに設定:
基になるドローアブル(progress_primary_holo_light.9.png)が期待どおりにスケーリングされていないことがわかります。この理由は、9パッチの境界線が上下の数ピクセルのみをスケーリングしているためです。
単一ピクセルの黒い境界線(緑色の矢印)で囲まれた水平領域は、Androidが.pngを垂直方向にサイズ変更する必要があるときに引き伸ばされる部分です。2つの赤い矢印の間の領域は垂直方向に引き伸ばされません。
これを修正する最善の解決策は、9patch .pngを変更して、「キャンバス領域」ではなくバーを拡大し、これらの9patchを使用するカスタムプログレスバーxmlを作成することです。同様にここで説明されています:https ://stackoverflow.com/a/18832349
これは、不確定ではないHolo.LightProgressBarの実装です。不確定およびHoloProgressBars用に独自の9パッチを追加する必要があります。理想的には、キャンバス領域を完全に削除する必要がありました。代わりに私はそれを残しましたが、「バー」領域を伸縮可能に設定しました。 https://github.com/tir38/ScalingHoloProgressBar
賛成票が多いここでの多くの解決策は、受け入れられた答えでさえ、私にはうまくいきませんでした。scaleYを設定して解決しましたが、ドローアブルがピクセル化されているため、高さが高すぎる場合は適切な解決策ではありません。
プログラムで:
progressBar.setScaleY(2f);
XMLレイアウト:
android:scaleY="2"
<ProgressBar
android:minHeight="20dip"
android:maxHeight="20dip"/>
これは私が使用したプログレスバーです。
<ProgressBar
android:padding="@dimen/dimen_5"
android:layout_below="@+id/txt_chklist_progress"
android:id="@+id/pb_media_progress"
style="@style/MyProgressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:progress="70"
android:scaleY="5"
android:max="100"
android:progressBackgroundTint="@color/white"
android:progressTint="@color/green_above_avg" />
そしてこれは私のスタイルタグです
<style name="MyProgressBar" parent="@style/Widget.AppCompat.ProgressBar.Horizontal">
<item name="android:progressBackgroundTint">@color/white</item>
<item name="android:progressTint">@color/green_above_avg</item>
</style>
値->styles.xml
<style name="tallerBarStyle" parent="@android:style/Widget.SeekBar">
<item name="android:indeterminateOnly">false</item>
<item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
<item name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item>
<item name="android:minHeight">8dip</item>
<item name="android:maxHeight">20dip</item>
</style>
次に、ProgressBarに次を追加します。
style="@style/tallerBarStyle"
プログレスバーのスタイルを次のように設定できます。
style="@android:style/Widget.ProgressBar.Horizontal"