84

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

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

ここに画像の説明を入力してください

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

ここに画像の説明を入力してください

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

4

11 に答える 11

215

最も簡単な解決策は次のようになると思います。

mProgressBar.setScaleY(3f);
于 2014-12-04T18:14:08.547 に答える
81

xmlファイルのandroid:scaleY = "8"

于 2017-06-22T13:52:54.123 に答える
47

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

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

于 2012-11-22T10:02:08.160 に答える
20

これを使って

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

于 2013-07-23T08:03:39.520 に答える
14

他の回答で述べたように、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ディップハイトプログレスバー

最大/最小を100ディップに設定: 100ディップハイトプログレスバー

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

9パッチ

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

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

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

于 2013-12-03T19:41:00.553 に答える
13

賛成票が多いここでの多くの解決策は、受け入れられた答えでさえ、私にはうまくいきませんでした。scaleYを設定して解決しましたが、ドローアブルがピクセル化されているため、高さが高すぎる場合は適切な解決策ではありません。

プログラムで:


progressBar.setScaleY(2f);

XMLレイアウト:


android:scaleY="2"
于 2019-11-18T16:33:53.367 に答える
13

LinearProgressIndicatorマテリアルコンポーネントライブラリとapp:trackThickness属性によって提供されるものを使用できます。

<com.google.android.material.progressindicator.LinearProgressIndicator
    android:indeterminate="true"
    app:trackThickness="xxdp"
    ../>

12dp

ここに画像の説明を入力してください

4dp

ここに画像の説明を入力してください

注:少なくともバージョンが必要1.3.0-alpha04です。

于 2020-08-18T07:42:12.417 に答える
9
<ProgressBar  
android:minHeight="20dip" 
android:maxHeight="20dip"/>
于 2012-11-22T09:57:02.303 に答える
6

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

<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>
于 2018-12-26T06:24:34.863 に答える
4

値->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"
于 2012-11-22T10:08:57.727 に答える
0

プログレスバーのスタイルを次のように設定できます。

style="@android:style/Widget.ProgressBar.Horizontal"    
于 2019-06-25T10:12:50.647 に答える