我需要能够使用相对大小的填充 - 根据设备的分辨率和dpi更大或更小。
例如,如果我的视图宽100px,我希望剩下10px填充和10px填充正确。 但是,如果它在更高密度的屏幕上运行,并且说是250px,我需要左右填充,每个都是25像素。
硬编码像素或dp看起来似乎不合理,如果我能摆脱它,我更愿意避免代码隐藏缩放逻辑。我也不想使用任何额外的加权空视图来获得相同的效果。不知道我怎么能用它来模拟填充。
有没有办法从xml中执行此操作?或者我是否必须根据后面代码中的设备分辨率/ dpi来缩放它们?
答案 0 :(得分:0)
这不是“填充的相对大小”,但我认为使用Android dimension value defined in XML会做你想要的。很难从你的问题中猜出你想要避免“硬编码像素”而且“从xml中做这个”;)
上面的链接给出了这个例子;
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textview_height">25dp</dimen>
<dimen name="textview_width">150dp</dimen>
<dimen name="ball_radius">30dp</dimen>
<dimen name="font_size">16sp</dimen>
</resources>
然后;
<TextView
android:layout_height="@dimen/textview_height"
android:layout_width="@dimen/textview_width"
android:textSize="@dimen/font_size"/>
Android SDK本身使用这种方法;
例如values/dimens.xml
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>
values-sw600dp/dimens.xml
<resources>
<!--
Customize dimensions originally defined in res/values/dimens.xml (such as
screen margins) for sw600dp devices (e.g. 7" tablets) here.
-->
</resources>
通过使用“配置限定符名称”,您可以在providing resources时在API级别,屏幕尺寸,纵向与横向,上述“及更多”的组合上定位values-FOO
。