2017-04-14 4 views
1

동적 진행 막대 너비를 만들지 만 올바르게 표시됩니다. 내가 너비 (272 dp)를 XML로 설정하면 올바르게 표시되지만 프로그램 적으로 동일한 너비가 올바르게 표시되지 않습니다.동적 가로 진행 막대 너비가 안드로이드에서 전체 너비를 표시하지 않음

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로 변경하십시오. –