2017-04-14 57 views
1

我正在創建動態進度條寬度,但現在正確顯示。當我在xml中設置寬度(272 dp)時,它顯示正常,但我設置的寬度相同,但不顯示正確的寬度。動態水平進度條寬度在android中不顯示全寬

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(); 
+1

因爲params.width = 272以像素爲單位。在xml中,你正在設置dp值 –

+0

@DivyeshPatel我該怎麼做才能得到準確的? –

回答

2

使用:

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); 
} 
+0

COMPLEX_UNIT_DP不可用我應該使用DIP –

+0

更改它與DIP –