在Android中,XML用于设计用户界面。 Android为每个标记提供了一组属性[例如:id,layout_width,layout_height]。
但是,是否有可能在Android中为所有标签添加新属性。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/search_result"
extra = "This is search field"
useOfThisTag = "Search Operation"
etc...
/>
答案 0 :(得分:2)
这取决于你想要达到的目标。官方Android实现中没有全局属性。你提到的有两种:
查看属性:id,tag,background,padding等。这些属性由View类解释,看起来是全局的,因为您在xml布局文件中看到的几乎所有内容都会扩展View。
布局属性:宽度,高度,边距等。此组始终由父布局解释。如果在LinearLayout中放置一个视图,那么对于该视图,您可以使用LinearLayout.LayoutParams声明的属性。
如果您想添加真正的全局属性,可以尝试书法的方法。它是一个库,它为所有文本视图添加了对自定义字体的支持。他们的作者在解析视图标签时使用自定义ContextWrapper和资源解析器来拦截Calligraphy的属性。
这与包含,片段,布局和合并标记在属性级别上的工作方式非常相似。这些标记是全局的,在LayoutInflater中进行解析和处理。
答案 1 :(得分:-1)
为自定义属性
创建 attrs.xml 文件<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="ColorOptionsView">
<attr name="titleText" format="string" localization="suggested" />
<attr name="valueColor" format="color" />
</declare-styleable>
</resources>
activity_main.xml :包含textview的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
<!-- define new name space for your attributes -->
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- Assume that this is your new component. It uses your new attributes -->
<com.example.vishva.CustomTextview
android:layout_width="match_parent"
android:layout_height="match_parent"
custom:titleText="Background color"
custom:valueColor="@android:color/holo_green_light"
/>
</LinearLayout>
您还必须创建扩展Textview类
的CustomTextview类