私のアプリケーションUIはAndroid Support Libraryを使用して構築されていますが、現在、アプリが本当に必要とする(intederminate)プログレスバーのAppCompatバージョンはありません。
マテリアルデザインのプログレスバーを達成するためにサードパーティのライブラリを使用したくないので、サポートライブラリに含まれていない理由についての情報に誰かが座っているのか、それが到着する兆候があるのか(いつ)あるのか疑問に思っています。
ProgressBar
をAppCompatスタイルで使用できます。
これをレイアウトに追加するだけです:
<ProgressBar
style="@style/Base.Widget.AppCompat.ProgressBar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:indeterminate="true"
Android:visibility="visible" />
水平プログレスバーを使用する場合:
<ProgressBar
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
Android:layout_width="match_parent"
Android:layout_height="8dp"
Android:layout_marginTop="24dp"
Android:indeterminate="true"
Android:visibility="visible" />
彼らは公式の資料に従います ガイドライン 。
これは古い質問に対する答えですが、仲間の読者はこのソリューションに興味があるかもしれないと考えました。
サポートライブラリの新しいバージョン(26.1。+)には CircularProgressDrawable
と呼ばれるクラスが含まれており、ネイティブマテリアルの不確定なドロアブルの正確な外観を実装します。レイアウトでこれを簡単に使用するには、次のようにMaterialProgressBar
を構築できます。
public class MaterialProgressBar extends ProgressBar{
// Same dimensions as medium-sized native Material progress bar
private static final int RADIUS_DP = 16;
private static final int WIDTH_DP = 4;
public MaterialProgressView(Context context, AttributeSet attrs) {
super(context, attrs);
// The version range is more or less arbitrary - you might want to modify it
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Lollipop
|| Build.VERSION.SDK_INT > Build.VERSION_CODES.O_MR1) {
final DisplayMetrics metrics = getResources().getDisplayMetrics();
final float screenDensity = metrics.density;
CircularProgressDrawable drawable = new CircularProgressDrawable(context);
drawable.setColorSchemeColors(getResources().getColor(R.color.colorPrimary));
drawable.setCenterRadius(RADIUS_DP * screenDensity);
drawable.setStrokeWidth(WIDTH_DP * screenDensity);
setIndeterminateDrawable(drawable);
}
}
}
ガブリエレ・マリオッティ氏によるスタイルを使った答えを改善しようとしています。
このようなスタイルを書く
<style name="infinite_progress_horizontal" parent="Widget.AppCompat.ProgressBar.Horizontal">
<item name="Android:layout_width">match_parent</item>
<item name="Android:layout_height">wrap_content</item>
<item name="Android:indeterminate">true</item>
</style>
このようにプログレスバーで使用します。
<ProgressBar style="@style/infinite_progress_horizontal" />