Android studio:在自定义扩展活动上更改textSize

时间:2016-06-15 20:34:58

标签: android android-layout

我将TextView类扩展为" CustomTextView"这就是我需要设置自定义字体的原因。结果如下:

public class CustomTextView extends TextView {

    public CustomTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/nn.otf"));
        this.setTextSize(30);
    }
}

你可以看到我设置了一个默认的textSize,它是30:

当我想要这个CustomTextView时,我使用这段代码:

<com.calendar.CustomTextView
    android:id="@+id/edData"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="DOM 21 GIU"
    android:textSize="45dp"/>

如果您注意到,我将textSize值设置为45dp,但它仍为30(来自自定义类)。 如何设置不同的textSize?另外,对于大胆的风格?

3 个答案:

答案 0 :(得分:1)

你应该删除this.setTextSize(30);来自构造函数,因为xml布局在super(context,attrs)调用期间执行resize,并且粗体字体应该包含在otf文件中(通常是不同样式的不同otf文件)

答案 1 :(得分:1)

这是我的解决方案:(我使用textColor而不是textSize进行测试,但它是相同的。)

我编辑了res / values / atrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="CustomTextView">
        <attr name="textColor" format="string" />
    </declare-styleable>
</resources>

然后,我编辑了我的课程:

public class CustomTextView extends TextView {

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

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

    public CustomTextView(Context context) {
        super(context);
        init(null);
    }

private void init(AttributeSet attrs) {
    if (attrs != null) {
        TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.CustomTextView);
        String fontName = a.getString(R.styleable.CustomTextView_fontName);

        if (textColor != null) {
            this.setTextColor(Color.parseColor(textColor));
        } else {
            this.setTextColor(Color.parseColor("#000000"));
        }

        a.recycle();
    }
   }

}

所以这项工作:

 <com.imgspa.listviewadapter.CustomTextView
        android:id="@+id/ed"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            listviewadapter:textColor="#FF0000"/>

        <com.imgspa.listviewadapter.CustomTextView
            android:id="@+id/edRis"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="35dp" />

第一个自定义textview文本为红色,第二个是黑色

答案 2 :(得分:0)

设置样式只需使用android:textStyle="bold"。对于您的其他问题,您可以使用attrs.getAttribute(NAME OF ATTRIBUTE)方法从我认为的属性中检查textSize,然后您可以将其设置为该值或根据您的需要将其设置为30。