Android LinearLayout 分隔符,但百分比?
Android LinearLayout divider, but percentage?
在 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 在下面解释的那样,在这种情况下你几乎肯定想要 "px" 物理像素,而不是 dp 或 dip。)
对于现代 Android,仅限 apk 21 转发。
通常,至少根据我的经验,列表项分隔线 是 静态高度。无论如何,我认为您不能使用 XML 使其成为屏幕高度的百分比,但您可以通过编程方式使用 setDividerHeight()
;虽然你必须自己根据百分比计算大小。
否则,您可以根据具体情况调整大小break points by using resource qualifiers;例如h720dp
(最小高度720dp)或w600dp
(最小宽度600dp)。
使用configuration qualifiers并提供不同的维度:
例如
// 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>
同意 ,如果您在列表项中使用 divider
,则可以使用 setDividerHeight()
方法。但是如果你直接在 LinearLayout
中使用你的分隔线,你只有 linearLayout.setDividerDrawable();
注:
您应该使用 8px 而不是 8dp 或 8dip,如果您使用 dp 或 dip Android 将根据设备缩小它 dpi.So 它会根据响应世界中的设备而有所变化; ) 看起来有点难看。因此,要提出真正的问题,您应该在 px
值中使用高度,该值对于任何屏幕都是清晰且相同的尺寸...。
在 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 在下面解释的那样,在这种情况下你几乎肯定想要 "px" 物理像素,而不是 dp 或 dip。)
对于现代 Android,仅限 apk 21 转发。
通常,至少根据我的经验,列表项分隔线 是 静态高度。无论如何,我认为您不能使用 XML 使其成为屏幕高度的百分比,但您可以通过编程方式使用 setDividerHeight()
;虽然你必须自己根据百分比计算大小。
否则,您可以根据具体情况调整大小break points by using resource qualifiers;例如h720dp
(最小高度720dp)或w600dp
(最小宽度600dp)。
使用configuration qualifiers并提供不同的维度:
例如
// 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>
同意 divider
,则可以使用 setDividerHeight()
方法。但是如果你直接在 LinearLayout
中使用你的分隔线,你只有 linearLayout.setDividerDrawable();
注:
您应该使用 8px 而不是 8dp 或 8dip,如果您使用 dp 或 dip Android 将根据设备缩小它 dpi.So 它会根据响应世界中的设备而有所变化; ) 看起来有点难看。因此,要提出真正的问题,您应该在 px
值中使用高度,该值对于任何屏幕都是清晰且相同的尺寸...。