以下は、複数の異なる android 4.x デバイスで動作するが、android 2.3 (デバイスとエミュレーター) では動作しないリスト ビュー アイテムの非常に単純化されたレイアウトです。
想定:プログレスバーは、水平方向と垂直方向の両方で、このアイテムの背景全体をカバーする必要があります。
Android 2.3の場合: プログレス セット > 0 の場合、プログレスバーは常に完全に表示され、高さは項目全体ではなく上部のみをカバーします。
レイアウト xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/shadowBackgroundHolder"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/selected_shadow_top_and_bottom" >
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="0dp"
android:padding="0dp"
android:progressDrawable="@drawable/progress_timer" />
<TextView
android:id="@+id/currentTime"
android:layout_width="wrap_content"
android:layout_height="50dp" />
<TextView
android:id="@+id/timer_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</FrameLayout>
プログレスバーの最大値、プログラムおよびxmlなど、さまざまなことを試しました。フレームレイアウトの代わりに相対レイアウト(および暗黙のzオーダー)を使用してみましたが、同じ問題です。0dp のパディングとマージンも問題ではありません。
興味深いことに、幅に wrap_content を使用すると同じ問題が発生しますが、短いプログレスバーが表示されますが、プログレスが 0 より大きい値に設定されている場合は常に塗りつぶされます。スクリーンショットの問題、それは問題ではありません。
他の誰かがこれを確認できますか、それとも動作が異なる理由について何か考えがありますか? さらに良いことに、回避策または解決策はありますか?
高さ全体をカバーすることを含まない別のレイアウトを使用して、プログレスバーを2.xデバイスで動作させることができます。これは現在のバージョンのアプリにありますが、次のバージョンではアイテムの高さ全体を使用して進行します。2.x デバイスにそのソリューションを選択することは、最適なソリューションではありません。
更新:代わりに RelativeLayout を使用する例では、高さ全体をカバーするようにできますが、進行状況は常に fullです。プログレスバー要素で次の追加属性を使用します。
android:layout_alignBottom="@id/content"
android:layout_alignLeft="@id/content"
android:layout_alignTop="@id/content"
Android 2.3 デバイスでは、完全な高さですが、進行状況 > 0 の場合、進行状況は常にいっぱいです。