2017-12-06 5 views
0

Ich habe mehrere Lösungen ausprobiert, aber keine scheint zu funktionieren! Ich benutze derzeit die folgenden Drawable als Teiler (dies ist das horizontale Beispiel, aber der gleiche Ansatz funktioniert auch für die vertikale, Schalthöhe für die Breite).LinearLayout Teilergröße programmatisch einstellen

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

Wo Teiler sieht wie folgt aus:

<?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> 

Allerdings Ich mag würde in der Lage sein, die Teilergröße programmatisch zu setzen, wie ich weiß nicht, was die Größe erst zur Laufzeit sein sollte. Ich habe versucht, eine ShapeDrawable wie folgt zu schaffen:

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); 

Aber der Teiler nicht erscheint, und die Einzelteile gerade aneinander haften. Ich bin mir ziemlich sicher, dass es kein Problem mit der Pixeldichte ist, denn egal, welche Zahl ich einstelle, ich bekomme den gleichen Effekt - es ist so, als ob das Zeichen nicht wirklich die Größe annimmt, auf die ich es eingestellt habe.

Antwort

1

Ihre ziehbar Höhe ist 0. versuchen Sie Folgendes:

<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> 

oder hinzufügen:

drawable.setIntrinsicHeight(height); 
+0

Der erste Ansatz funktioniert auch, wenn die Höhe auf 0 in der xml gesetzt. Aus irgendeinem Grund müssen für die Verwendung von 'ShapeDrawable' sowohl 'IntrinsicHeight' als auch' IntrinsicWidth' festgelegt werden. –

Verwandte Themen