我用 android 开发不到两个月,我认为这是一个很棒的工具,现在我已经开始我的项目来扩展一些视图以添加新功能(例如:使用自定义字体),但我有一个问题,有一个 WPF 功能(.NET 框架)在这种情况下非常有用,无需扩展类。
这称为Attached Property,基本上是将新属性添加到现有类的能力。
普通安卓示例
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:my="http://schemas.android.com/apk/res/com.package.custom"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<com.package.CustomTextView
android:layout_width="fill_parent"
android:text="@string/hello"
android:layout_height="wrap_content"
android:id="@+id/TextView01"
android:textColor="@colors/text_color"
my:fontface="fonts/my-custom-font.ttf"
my:autosize="true"/>
<com.package.CustomButton
android:id="@+id/btn_continue"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/text_btn"
my:fontface="fonts/my-custom-btn-font.ttf" />
</LinearLayout>
定期添加这样的功能必须扩展 TextView 类,但使用附加属性可以做到这一点
附加属性示例
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:my="http://schemas.android.com/apk/res/com.package.custom"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<!-- there is no need to extend the class -->
<TextView
android:layout_width="fill_parent"
android:text="@string/hello"
android:layout_height="wrap_content"
android:id="@+id/TextView01"
android:textColor="@colors/text_color"
my:fontface="fonts/my-custom-font.ttf"
my:autosize="true"/>
<Button
android:id="@+id/btn_continue"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/text_btn"
my:fontface="fonts/my-custom-btn-font.ttf" />
</LinearLayout>
这节省了很多工作,因为我们不仅可以与 TextView 一起使用,还可以与其他类一起使用