我有以下情况:
in styles.xml
:
<style name="fooStyle">
<item name="android:padding">?fooView.padding</item>
<item name="android:background">?fooView.background</item>
<item name="android:gravity">?fooView.gravity</item>
</style>
in attrs.xml
:
<attr name="fooView.padding" format="dimension" />
<attr name="fooView.background" format="color|reference" />
<attr name="fooView.gravity" format="????"/>
in themes.xml
:
<style name="fooViewTheme" parent="android:Theme">
<item name="fooView.padding" >2dip</item>
<item name="fooView.background" >#AA000000</item>
<item name="fooView.gravity">right|bottom</item>
</style>
问题是我无法弄清楚该格式是什么fooView.gravity
应该。我已经尝试过string
, enum
and flag
但似乎都不起作用:我总是得到一个java.lang.NumberFormatException: unable to parse 'right|bottom' as integer
一旦使用该主题的视图被加载。
所有答案均表示赞赏。
这些是 Android 使用的重力值。您可以在您的attrs.xml
:
<resources>
<declare-styleable name="MyCustomView">
<attr name="gravity">
<flag name="bottom" value="80" />
<flag name="center" value="17" />
<flag name="center_horizontal" value="1" />
<flag name="center_vertical" value="16" />
<flag name="clip_horizontal" value="8" />
<flag name="clip_vertical" value="128" />
<flag name="end" value="8388613" />
<flag name="fill" value="119" />
<flag name="fill_horizontal" value="7" />
<flag name="fill_vertical" value="112" />
<flag name="left" value="3" />
<flag name="right" value="5" />
<flag name="start" value="8388611" />
<flag name="top" value="48" />
</attr>
</declare-styleable>
</resources>
在布局 XML 中,您可以这样使用它:
<MyCustomView
custom:gravity="center|bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
在 Java 代码中,您可以使用以下命令读取该值:
int gravity = a.getInt(R.styleable.MyCustomView_gravity, Gravity.NO_GRAVITY);
并直接将其设置为子视图,如果这对您有意义:
someSubView.setGravity(gravity);
您可以在来源中查找这些重力值android.view.Gravity
or here https://developer.android.com/reference/android/R.attr.html#gravity
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)