gpt4 book ai didi

java - 从 XML 获取自定义 TextView 的自定义属性

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:28 25 4
gpt4 key购买 nike

如何获取自定义 TextView 的自定义 fontname 属性以将字体设置为 Textview。根据属性值在TextView中设置字体

public class MyTextView extends TextView
{
public MyTextView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init();
}

public MyTextView(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
}

public MyTextView(Context context)
{
super(context);
init();
}

public void init()
{
// set font_name based on attribute value of textview in xml file
String font_name = "";
if (!isInEditMode())
{
Typeface tf = Typeface.createFromAsset(getContext().getAssets(),
"fonts/"+font_name);
setTypeface(tf);
}
}

在 Xml 文件中

<com.Example.MyTextView 
android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fontname="font.ttf"
android:text="Header"
/>

我也把font.ttf文件放在assets->fonts谢谢

最佳答案

1 。将 readAttr(context,attrs) 方法添加到您的构造函数中,如下所示。

public MyTextView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
readAttr(context,attrs);
init();
}

public MyTextView(Context context, AttributeSet attrs)
{
super(context, attrs);
readAttr(context,attrs)
init();
}

public MyTextView(Context context)
{
super(context);
init();
}

2。在同一个类中定义 readAttr() 方法。

private void readAttr(Context context, AttributeSet attrs) {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyTextView);

// Read the title and set it if any
String fontName = a.getString(R.styleable.MyTextView_fontname) ;
if (fontName != null) {
// We have a attribute value and set it to proper value as you want
}

a.recycle();
}

3。修改 attrs.xml 文件 (res/values/attrs.xml) 并将以下内容添加到文件中

<declare-styleable name="MyTextView">
<attr name="fontname" format="string" />
</declare-styleable>

4。在 Xml 文件中。

<com.Example.MyTextView 
android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
custom:fontname="font.ttf"
android:text="Header" />

5。将此行添加到 xml 文件的顶部容器。

xmlns:custom="http://schemas.android.com/apk/res/com.yourpackage.name"

就这些

关于java - 从 XML 获取自定义 TextView 的自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25583227/

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