在happy.xml中,我有一个LinearLayout ......
<LinearLayout
android:orientation="vertical"
android:divider="@drawable/happy_spacer"
android:showDividers="middle"
...>
这里是文件happy_spacer.xml ...
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:height="8dp" />
<solid android:color="#90909090" />
</shape>
太棒了,间距是8dp高。
但是你不能在响应的世界里那样工作,间隔的高度必须是它所在页面高度的一定百分比。
(或者,它必须 - 说 - 与happy.xml上的其他内容有关。)
Android解决方案是什么?
(重要 - 正如Charuka在下面解释的那样,在这种情况下,你几乎肯定想要&#34; px&#34;物理像素,而不是dp或dip。)
对于现代Android,仅限apk 21前进。
答案 0 :(得分:4)
通常,至少根据我的经验,列表项目分隔符是静态高度。在任何情况下,我认为您不能使用XML将其设置为屏幕高度的百分比,但您可以使用setDividerHeight()
以编程方式进行编程;虽然你必须自己根据百分比来计算尺寸。
否则,您可以使用break points根据具体的resource qualifiers调整尺寸;例如h720dp
(最小高度为720dp)或w600dp
(最小宽度为600dp)。
答案 1 :(得分:2)
使用configuration qualifiers并提供不同的尺寸:
e.g。
// happy_spacer.xml
<size android:height="@dimen/divider" />
// values/dimens.xml
<dimen name="divider">8dp</dimen>
// values-w720dp/dimens.xml
<dimen name="divider">16dp</dimen>
// values-w820dp/dimens.xml
<dimen name="divider">24dp</dimen>
答案 2 :(得分:1)
同意Bryan's answer如果您在列表项中使用divider
,则可以使用setDividerHeight()
方法。但是,如果您在LinearLayout
内直接使用分隔符,则只有linearLayout.setDividerDrawable();
注意:
你应该使用8px而不是8dp或8dip,如果你使用dp或dip,Android将根据设备dpi缩小它。因此它会根据响应世界中的设备而改变一点;)看起来有点难看。因此,要拥有您的真实问题,您应该使用px
中的高度值,该值对于任何屏幕都是明确且相同的大小....