android - 动态水平进度条宽度在 android 中不显示全宽

标签 android android-progressbar

<分区>

我正在创建动态进度条宽度,但它现在可以正确显示。当我在 xml 中设置宽度 (272 dp) 时它显示正确但我以编程方式设置相同的宽度它没有显示正确的宽度。

XML:

<ProgressBar
                            android:id="@+id/progress_bar_sleep"
                            style="@style/SleepProgress"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="@dimen/text_size_16dp"
                            android:layout_marginTop="@dimen/default_gap" />

代码:

    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) progressBarList.get(2).getLayoutParams();
params.width = 272;
        progressBarList.get(2).setLayoutParams(params);
        progressBarList.get(2).invalidate();

最佳答案

使用:

progressWidth= convertDpToPixels(272, this);

 public int convertDpToPixels(float Dp, Context context) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DP, Dp, context.getResources().getDisplayMetrics());
    }

另一个公式:

public static float convertDpToPixel(float dp){
        DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
        float px = dp * (metrics.densityDpi / 160f);
        return Math.round(px);
}

关于android - 动态水平进度条宽度在 android 中不显示全宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43407324/

相关文章:

android - 应用程序未通过托管的 Google Play 商店更新

java - 如何使用 Intent 传递类的对象?

android - ABS 到 AppCompat

android - Google Map Android API V2 中两个位置之间的旅行时间

android - 在低于 11 的 Android API 上的 ActionBar 中显示/隐藏 ProgresBar

安卓 : Expandable ListView Adapter from Database/ContentProvider/ContentResolver

android - 使用 MediaPlayer 的流式音频进度条

java - onProgressUpdate() 中的 NullPointerException

android - 如何使进度条在屏幕中居中

android - play store Review VIew用的是什么view