gpt4 book ai didi

android - 自定义小部件中使用的自定义 XML 属性

转载 作者:行者123 更新时间:2023-11-30 04:00:14 25 4
gpt4 key购买 nike

我正在创建各种 Android 小部件的子类来创建我自己的小部件。这是我到目前为止所做的:

(在我的 res/values/attr.xml 中定义)

<attr name="font">
<enum name="ARIAL_BOLD" value="1" />
<enum name="ARIAL_ROUND_MT" value="2" />
<enum name="HELVETICA" value="3" />
<enum name="HELVETICA_BOLD" value="4" />
<enum name="GILSANCE_LIGHT" value="4" />
</attr>

<declare-styleable name="EditText">
<attr name="font" />
</declare-styleable>
<declare-styleable name="Button">
<attr name="font" />
</declare-styleable>
<declare-styleable name="TextView">
<attr name="font" />
</declare-styleable>

然后在我的 EditText 中,我将其用作:

public class EditText extends android.widget.EditText {

public EditText(Context context) {
super(context);
}

public EditText(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.EditText);
}
}

现在我想读取已在 XML 代码中设置的枚举值。我怎样才能阅读它?然后,根据提供的字体,我想设置我的自定义字体。任何帮助将不胜感激。

最佳答案

这对我有用

<?xml version="1.0" encoding="utf-8"?>
<resources>

<attr name="font">
<enum name="ARIAL_BOLD" value="1" />
<enum name="ARIAL_ROUND_MT" value="2" />
<enum name="HELVETICA" value="3" />
<enum name="HELVETICA_BOLD" value="4" />
<enum name="GILSANCE_LIGHT" value="5" />
</attr>

<declare-styleable name="CustomEditText">
<attr name="font" />
</declare-styleable>
<declare-styleable name="CustomButton">
<attr name="font" />
</declare-styleable>
<declare-styleable name="CustomTextView">
<attr name="font" />
</declare-styleable>

</resources>

然后是我的自定义文件

public class CustomEditText extends android.widget.EditText {

public CustomEditText(Context context) {
super(context);
}

public CustomEditText(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.CustomEditText);
final int fontValue = a.getInt(R.styleable.CustomEditText_font, 0);
setTypeFace(fontValue);
}

public CustomEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.CustomEditText);
final int fontValue = a.getInt(R.styleable.CustomEditText_font, 0);
setTypeFace(fontValue);
}

public void setTypeFace(int fontValue) {
Typeface myTypeFace = Typeface.createFromAsset(this.getContext()
.getAssets(), getApplicationFont(fontValue));
this.setTypeface(myTypeFace);
}
}


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="@drawable/login_background"
android:orientation="vertical" xmlns:app="http://schemas.android.com/apk/res/com.mycomp.myproj">

<TextView
android:id="@+id/topBarText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#80000000"
android:gravity="center_horizontal|center_vertical"
android:text="@string/application_name"
android:textColor="@color/white"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textSize="35sp" />

<com.myapp.ui.CustomEditText
app:font="ARIAL_ROUND_MT"
android:id="@+id/samPLE"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#80000000"
android:gravity="center_horizontal|center_vertical"
android:text="@string/application_name"
android:textColor="@color/white"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textSize="35sp" />

这对我有用。请注意,我的自定义 View 被放置在 Android 库项目中。

关于android - 自定义小部件中使用的自定义 XML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12616592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com