2017-12-06 2 views
0

여러 솔루션을 시도했지만 아무 것도 작동하지 않습니다! 나는 현재 아래의 Drawable을 디바이더로 사용하고 있습니다. (이 예제는 수평 예제이지만 수직 인 경우에도 동일한 접근법이 적용되며 너비는 높이 전환).프로그래밍 방식으로 LinearLayout 디바이더 크기 설정

LinearLayout linearLayout; // set with findViewById 
linearLayout.setDividerDrawable(getResources().getDrawable(R.drawable.divider)); 
linearLayout.setShowDividers(SHOW_DIVIDER_MIDDLE); 

은 분할은 다음과 같다 여기서 내가 좋아하는 것 그러나

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <size 
     android:width="10dp" 
     android:height="0dp" /> 
</shape> 

내가 크기가 런타임까지해야 모르겠어요으로 프로그래밍 방식 디바이더의 크기를 설정할 수 있습니다 할 수 있습니다. 나는이 같은 ShapeDrawable를 만드는 시도했다 :

int desiredWidth = 10; 
LinearLayout linearLayout; // set with findViewById 
ShapeDrawable shapeDrawable = new ShapeDrawable(new RectShape()); 
shapeDrawable.getPaint().setColor(Color.TRANSPARENT); 
shapeDrawable.setIntrinsicWidth(desiredWidth); 
linearLayout.setDividerDrawable(shapeDrawable); 
linearLayout.setShowDividers(SHOW_DIVIDER_MIDDLE); 

그러나 디바이더가 나타나지 않고, 항목이 바로 붙어있다. 꽤 많은 픽셀 밀도 문제가 아니라고 확신합니다. 동일한 효과를 얻습니다. 드로어 블이 실제로 설정 한 크기를 사용하지 않는 것과 같습니다.

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <size 
     android:width="10dp" 
     android:height="10dp" /> 
    <!--android:height depends on the height you want for the horizontal line---> 
</shape> 

또는 추가 :

답변

1

당신의 당김 높이가 0이 다음과 같은 시도이다

drawable.setIntrinsicHeight(height); 
+0

첫 번째 방법은 심지어 XML로 0으로 설정 높이와 잘 작동합니다. 어떤 이유로'ShapeDrawable'을 사용하려면'IntrinsicHeight'와'IntrinsicWidth'가 모두 필요합니다. –

관련 문제