因此,我正在编写自己的自定义视图,其中包含一个TextView和一个EditText。我想要做的是让用户为每一个单独设置一个文本样式,如下所示:
<declare-styleable name="InputRow">
<attr name="descriptionTextStyle" format="string" />
<attr name="valueTextStyle" format="string" />
</declare-styleable>我认为这是可行的,所以在XML中我可以这样说:
app:descriptionTextStyle="bold"
app:valueTextStyle="italic"然而,当我试图从类型化数组中读取时,问题就来了。我可以得到字符串:
if(typedArray.hasValue(R.styleable.InputRow_descriptionTextStyle)) {
setDescriptionTextStyle(typedArray.getString(R.styleable.InputRow_descriptionTextStyle));
}但是当我想调用descriptionTextView.setTypeface(Typeface tf, int style)时,我需要第二个参数的整数值,而我没有这个整数值。
我不能将样式更改为int格式,因为那样="bold"就无效了,所以我不知道如何获得文本样式。
发布于 2016-11-18 03:43:58
您可以使用
public void setTypeface(Typeface tf);方法,它只需要一个typeface参数。
同样,为了将字符串转换为字体,你可以这样做:
switch (typefaceString) {
case SANS:
tf = Typeface.SANS_SERIF;
break;
case SERIF:
tf = Typeface.SERIF;
break;
case MONOSPACE:
tf = Typeface.MONOSPACE;
break;
}https://stackoverflow.com/questions/40663434
复制相似问题