创建;“主题”;用于包含多个内部文本视图的自定义Android视图
我有一个自定义视图“address_view.xml”,它显示一个人的姓名和街道地址,定义如下:创建;“主题”;用于包含多个内部文本视图的自定义Android视图,android,android-view,android-styles,Android,Android View,Android Styles,我有一个自定义视图“address_view.xml”,它显示一个人的姓名和街道地址,定义如下: 此视图在我的应用程序的多个页面中使用,但每个文本视图有两种字体、文本颜色和大小的变体 是否可以仅为此视图创建“主题”,分别设置名称和地址文本视图的textFont/textColor?例如,我想做如下事情: <com.example.view.AddressView ... style="@style/Theme1" /> 它将“名称”文本视图设置为使用Fon
此视图在我的应用程序的多个页面中使用,但每个文本视图有两种字体、文本颜色和大小的变体
是否可以仅为此视图创建“主题”,分别设置名称和地址文本视图的textFont/textColor?例如,我想做如下事情:
<com.example.view.AddressView
...
style="@style/Theme1" />
它将“名称”文本视图设置为使用FontA、ColorA和Size1,并将“地址”文本视图设置为使用FontB、ColorB和Size2
通过这种方式,我可以在某些页面上使用Theme1,使用第二种字体/颜色/大小组合创建另一个“Theme2”,并在其他页面上使用它。首先需要定义自定义属性,然后在样式中使用它们。作为一个例子,我将使用三角形的样式 首先用属性定义要更改的内容,并将它们放入
/res/attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="Triangle">
<attr name="triangleColor" format="color"/>
<attr name="triangleStrokeColor" format="color"/>
<attr name="triangleStrokeWidth" format="dimension"/>
</declare-styleable>
</resources>
然后定义样式注意:自定义属性项不需要xml名称空间,因此没有android:
<style name="defaultTriangle">
<item name="triangleColor">#FF33B5E5</item>
<item name="triangleStrokeColor">@android:color/black</item>
<item name="triangleStrokeWidth">3dp</item>
</style>
#FF33B5E5
@android:彩色/黑色
3dp
然后申请
<some.package.Triangle
style="@style/defaultTriangle"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:padding="10dp"
android:rotation="0"
/>
这对文本字体有何作用?“我的字体”作为单独的.ttf文件包含在资产/文件夹中。您可以创建一个字符串类型的属性,然后以字符串形式提供字体的位置。在您的视图中,您阅读并使用该路径
<style name="defaultTriangle">
<item name="triangleColor">#FF33B5E5</item>
<item name="triangleStrokeColor">@android:color/black</item>
<item name="triangleStrokeWidth">3dp</item>
</style>
<some.package.Triangle
style="@style/defaultTriangle"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:padding="10dp"
android:rotation="0"
/>