這不是真正的「填充相對大小」,但我認爲使用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>
您可以針對values-FOO
在API級別,屏幕尺寸,縱向VS景觀,上面的「多」的組合,當你providing resources通過使用「配置限定符」 。
來源
2014-04-23 09:17:05
jpw
你必須要更具體。保證金,填充和重量都有非常不同的目標。重量將設置您的視圖的寬度和/或高度,但不是邊距。填充用於widget /視圖本身的*內部,所以這比weight屬性更進一步。 – 2013-03-15 13:44:34
@StefandeBruijn點,修改了問題。 – George 2013-03-15 13:48:05
你說DP(i)似乎不合理,爲什麼不呢?它們不是硬編碼像素。它們是每英寸點數。他們會做你想要的。 8dpi(谷歌建議的保證金)在高分辨率屏幕上的分辨率將高於在低分辨率屏幕上的分辨率。 – 2013-03-15 13:54:34