フレームの上部に水平プログレスバーを配置しようとしています。しかし、私が単に取り除くことができなかったパディングがあるようです。何か助け?
<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ProgressBar Android:id="@+id/flv_progress_bar"
Android:layout_width="fill_parent"
style="@Android:style/Widget.Holo.ProgressBar.Horizontal"
Android:indeterminateOnly="true"
Android:layout_height="wrap_content"
Android:layout_gravity="top"/>
</FrameLayout>
Pork'n'Bunnyの回答は、APIレベル16以上のデバイスで機能しました。このソリューションはすべてのデバイスで機能しました。 6dpでXMLにプッシュするだけです。
<ProgressBar
Android:id="@+id/progressbar_Horizontal"
style="?android:attr/progressBarStyleHorizontal"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:max="100"
Android:layout_alignParentTop="true"
Android:layout_marginTop="-6dp" />
その見た目から、それはデフォルトのスタイリングで使用されている画像が原因であると思います
style="@Android:style/Widget.Holo.ProgressBar.Horizontal"
(私が参照している画像はこれです:@Android:drawable/progress_indeterminate_horizontal_holo
および@Android:drawable/progress_horizontal_holo_dark
)
これらの画像には多くのキャンバスの背景があります。したがって、このギャップを示しています。
私の推薦:
カスタムイメージを使用してPregressBarのスタイルを設定します。キャンバスの間隔があまりないもの。
この問題の完全な解決策は次のようになります。誰かがコードの断片を必要とする場合に備えて、これは私がやったことです。
これがprogress_indeterminate_horizontal_holo.xmlです
<animation-list
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:oneshot="false">
<item Android:drawable="@drawable/progressbar_indeterminate_holo1" Android:duration="50" />
<item Android:drawable="@drawable/progressbar_indeterminate_holo2" Android:duration="50" />
<item Android:drawable="@drawable/progressbar_indeterminate_holo3" Android:duration="50" />
<item Android:drawable="@drawable/progressbar_indeterminate_holo4" Android:duration="50" />
<item Android:drawable="@drawable/progressbar_indeterminate_holo5" Android:duration="50" />
<item Android:drawable="@drawable/progressbar_indeterminate_holo6" Android:duration="50" />
<item Android:drawable="@drawable/progressbar_indeterminate_holo7" Android:duration="50" />
<item Android:drawable="@drawable/progressbar_indeterminate_holo8" Android:duration="50" />
ローカルリソースファイルにコピーされたスタイルリソース。
<style name="Widget">
<item name="Android:textAppearance">@Android:attr/textAppearance</item>
</style>
<style name="Widget.ProgressBar">
<item name="Android:indeterminateOnly">true</item>
<item name="Android:indeterminateBehavior">repeat</item>
<item name="Android:indeterminateDuration">3500</item>
</style>
<style name="Widget.ProgressBar.Horizontal">
<item name="Android:indeterminateOnly">false</item>
<item name="Android:indeterminateDrawable">@drawable/progress_indeterminate_horizontal_holo</item>
</style>
最後に、ローカルレイアウトファイルで最小高さを4 dpに設定します。
<ProgressBar
Android:id="@+id/pb_loading"
style="@style/Widget.ProgressBar.Horizontal"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
Android:indeterminate="true"
Android:minHeight="4dp"
Android:minWidth="48dp"
Android:progressDrawable="@drawable/progress_indeterminate_horizontal_holo" />
ドローアブルがスクリーンショットで意図したとおりに機能しているので、別のソリューションを思いつきました。 6dp上げるだけです。
mProgress = (ProgressBar) view.findViewById(R.id.fwv_progress);
mProgress.animate().withLayer().yBy(-6.0f*getResources().getDisplayMetrics().density).setDuration(0).start();