Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建;“主题”;用于包含多个内部文本视图的自定义Android视图_Android_Android View_Android Styles - Fatal编程技术网

创建;“主题”;用于包含多个内部文本视图的自定义Android视图

创建;“主题”;用于包含多个内部文本视图的自定义Android视图,android,android-view,android-styles,Android,Android View,Android Styles,我有一个自定义视图“address_view.xml”,它显示一个人的姓名和街道地址,定义如下: 此视图在我的应用程序的多个页面中使用,但每个文本视图有两种字体、文本颜色和大小的变体 是否可以仅为此视图创建“主题”,分别设置名称和地址文本视图的textFont/textColor?例如,我想做如下事情: <com.example.view.AddressView ... style="@style/Theme1" /> 它将“名称”文本视图设置为使用Fon

我有一个自定义视图“address_view.xml”,它显示一个人的姓名和街道地址,定义如下:


此视图在我的应用程序的多个页面中使用,但每个文本视图有两种字体、文本颜色和大小的变体

是否可以仅为此视图创建“主题”,分别设置名称和地址文本视图的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"
    />