2014-04-02 3 views
0

의 일부로 ProgressBar을 사용 중입니다. 이제, ProgressBar의 값에 따라 ProgressBar의 너비를 표시하려고합니다.이 값은 화면을 기반으로합니다.

예 : 진행 값이 100이면 장치 화면의 너비가 100 %이고 모든 0-100 값의 너비가 같아야합니다.

내 코드는 다음과 같습니다 :

layout.xml :진행률 및 장치 화면 기준에 따라 진행 바의 너비 설정

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:layout_marginTop="3dp" > 

    <ProgressBar 
     android:id="@+id/pbTopicAccuracy" 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="20dp" /> 

    <TextView 
     android:id="@+id/tvAccuracy" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@id/pbTopicAccuracy" 
     android:layout_alignLeft="@id/pbTopicAccuracy" 
     android:layout_alignTop="@id/pbTopicAccuracy" 
     android:paddingLeft="5dp" 
     android:textColor="@color/black" 
     android:textSize="12sp" /> 
</RelativeLayout> 

자바 코드 :

adapter.setViewBinder(new SimpleAdapter.ViewBinder() { 

    @Override 
    public boolean setViewValue(View view, Object data, String textRepresentation) { 

     if (view.getId() == R.id.pbTopicAccuracy) { 
      int value = Integer.parseInt(data.toString()); 
      ((ProgressBar) view).setProgress(value); 

      view.setBackgroundResource(R.drawable.report); 

      RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(value, 30); 
      ((ProgressBar) view).setLayoutParams(params); 
     } 
    } 
}); 

그것은 잘 작동하지만, 그것은 폭을 설정하지 않습니다 그것이 당연히 있어야한다. 값이 100이면 장치 화면의 4.5 부분과 같이 너비를 설정합니다.

이 문제를 방지하고 적절한 너비를 얻으려면 어떻게해야합니까?

답변

0

문제의 원인이되는 여백이 아닙니까?

android:layout_marginLeft="5dp" 
android:layout_marginRight="5dp" 

그렇지 않은 경우 그림에 문제를 설명해 주시겠습니까?

+0

아니, 다른 것입니다. 이 RelativeLayout가 LinearLayout의 부모이기 때문입니다. –

+0

문제의 스크린 샷을 만들 수 있습니까? –

0

나는 아래의 코드에 의해이 문제를 해결 한 :

Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    int ratio = ((int) display.getWidth() /100) * value ; 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ratio, 30); 
      ((ProgressBar) view).setLayoutParams(params);