以编程方式设置LinearLayout分隔符大小

时间:2017-12-06 18:09:36

标签: android android-linearlayout android-drawable divider

我尝试了多种解决方案,但似乎都没有效果!我目前使用以下Drawable作为分隔符(这是水平示例,但同样的方法也适用于垂直,切换高度为宽度)。

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

divider的位置如下:

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

但是分割器没有出现,而且物品只是粘在了一起。我很确定这不是一个像素密度问题,因为无论我输入什么数字我都会得到相同的效果 - 就好像drawable实际上没有采用我设置它的大小。

1 个答案:

答案 0 :(得分:1)

您的可绘制高度为0.请尝试以下操作:

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

或添加:

drawable.setIntrinsicHeight(height);