キャンセル ボタンとプログレス バーを持つ LinearLayout があります。プログレス バーは 70% で、キャンセル ボタンは 30% です。
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ProgressBar
android:id="@+id/uploadProgressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_weight=".7"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
/>
<Button
android:id="@+id/uploadCancelButton"
style="@style/TitleBarButton"
android:layout_width="0dp"
android:layout_weight=".3"
android:layout_height="wrap_content"
android:text="@string/cancel_btn"
android:layout_gravity="center_vertical"
/>
</LinearLayout>
これはうまくいきますが、実際にはプログレスバーまたはテキストビューを表示したいことに気付きました.テキストビューは小さなステータスメッセージになる可能性があります(アップロードが失敗した場合)。
上記の LinearLayout に TextView を配置し、デフォルトで可視性を「gone」に設定し、重みをプログレスバーと同じに設定してみました。コードでは、プログレス バーを表示またはテキスト ビューに設定し、もう一方を非表示に設定します。ただし、Android システムは、目に見えないアイテムの重量を合計に寄与しているように見えました。LinearLayout xml 属性で android:weightSum="1.0" を使用してみましたが、テキストがなくなってもスペースが必要だったため、ボタンが表示されなくなりました。