私のactivity_main.xml
は下にあります、あなたが見るように、高さは40ディップに設定されています。
MyEclipseでは、次のようになります。
しかし、携帯電話で実行すると、次のようになります。
だから私の質問は、プログレスバーの実際の高さが私が設定したものではない理由ですか?プログレスバーの高さを増やす方法は?
このチュートリアル から:
<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)からのテーマで、topは元のテーマです)。
最も簡単な解決策は次のとおりだと思います:
mProgressBar.setScaleY(3f);
XmlファイルのAndroid:scaleY = "8"
これを使って
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を変更して「キャンバス領域」ではなくバーを引き伸ばし、次にこれらの9patchesを使用するカスタムプログレスバーxmlを作成することです。同様にここで説明します: https://stackoverflow.com/a/18832349
これは、不定でないHolo.Light ProgressBarの実装です。 IndeterminantおよびHolo ProgressBarsには、独自の9パッチを追加する必要があります。理想的には、キャンバス領域を完全に削除する必要がありました。代わりに、「バー」領域を伸縮可能に設定しました。 https://github.com/tir38/ScalingHoloProgressBar
<ProgressBar
Android:minHeight="20dip"
Android:maxHeight="20dip"/>
values-> 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"
これは私が使用したプログレスバーです。
<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>
プログレスバーのスタイルをこれに設定できます:
style="@Android:style/Widget.ProgressBar.Horizontal"