web-dev-qa-db-ja.com

Androidプログレスバーの高さを設定する方法は?

私のactivity_main.xmlは下にあります、あなたが見るように、高さは40ディップに設定されています。

MyEclipseでは、次のようになります。

enter image description here

しかし、携帯電話で実行すると、次のようになります。

enter image description here

だから私の質問は、プログレスバーの実際の高さが私が設定したものではない理由ですか?プログレスバーの高さを増やす方法は?

61
Tom Xue

このチュートリアル から:

<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は元のテーマです)。

39

最も簡単な解決策は次のとおりだと思います:

mProgressBar.setScaleY(3f);
156
Martin Pfeffer

XmlファイルのAndroid:scaleY = "8"

50
Maksim Kniazev

これを使って

style="@Android:style/Widget.ProgressBar.Horizontal"

15
Piraba

他の回答で述べたように、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ディップに設定された最大/最小: 25 dip height progress bar

100ディップに設定された最大/最小: 100 dip height progress bar

基礎となるドロウアブル(progress_primary_holo_light.9.png)が期待どおりにスケーリングされていないことがわかります。これは、9パッチの境界線が上下の数ピクセルのみをスケーリングしているためです。

9-patch

単一ピクセルの黒い境界線(緑色の矢印)で囲まれた水平領域は、Androidが.pngを垂直方向にサイズ変更する必要があるときに引き伸ばされる部分です。 2つの赤い矢印の間の領域は、垂直方向には引き伸ばされません。

これを修正する最良の解決策は、9patch .pngを変更して「キャンバス領域」ではなくバーを引き伸ばし、次にこれらの9patchesを使用するカスタムプログレスバーxmlを作成することです。同様にここで説明します: https://stackoverflow.com/a/18832349

これは、不定でないHolo.Light ProgressBarの実装です。 IndeterminantおよびHolo ProgressBarsには、独自の9パッチを追加する必要があります。理想的には、キャンバス領域を完全に削除する必要がありました。代わりに、「バー」領域を伸縮可能に設定しました。 https://github.com/tir38/ScalingHoloProgressBar

14
tir38
<ProgressBar  
Android:minHeight="20dip" 
Android:maxHeight="20dip"/>
10

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"
3
Talha

これは私が使用したプログレスバーです。

<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>
1
Syeda

プログレスバーのスタイルをこれに設定できます:

style="@Android:style/Widget.ProgressBar.Horizontal"    
0
Rania