自定义TextView填充,TextSize属性不起作用

时间:2014-11-28 18:14:57

标签: android textview

所以我正在尝试创建一个扩展本机TextView的自定义textView。但是,当我在片段中对其进行充气时,尽管像背景这样的属性正在工作,但填充和textSize等属性不起作用。即使我以编程方式在构造函数中添加它们,它们也无法正常工作。我必须遗漏一些微不足道的东西。请帮忙。

CustomView

public class TextBox extends TextView{

    private OneTimeTask oneTimeTask;
    private Integer oneTimeTaskId;

    public TextBox (Context context) {
        super(context);
        appearance();

    }

    public TextBox (Context context, AttributeSet attrs) {
        super(context, attrs);
        appearance();
    }

public TextBox (Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    appearance();
}

    public void  appearance(){
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT);
            this.setLayoutParams(params);
            this.setTextSize(getResources().getDimension(R.dimen.material_micro_text_size));
            this.setPadding((int) getResources().getDimension(R.dimen.material_padding),(int) getResources().getDimension(R.dimen.material_small_padding),(int) getResources().getDimension(R.dimen.material_padding),(int) getResources().getDimension(R.dimen.material_small_padding));
            this.setGravity(Gravity.CENTER_VERTICAL);
            this.setTextColor(getResources().getColor(R.color.white));
            this.setText("Not Started");
   }
 @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

    }
}

XML

<com.me.p.k.TextBox 

    xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:text="Test"
        android:id="@+id/state"
        android:textSize="10sp"
        android:gravity="bottom"
        android:paddingRight="16dp"
        android:paddingLeft="16dp"
        android:textColor="@color/white"
        android:background="@color/pink"
        android:paddingTop="16dp"
        android:paddingBottom="16dp" />

修改

添加了Karakuri的部分建议。

1 个答案:

答案 0 :(得分:1)

添加三个参数构造函数。

public TextBox (Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    appearance();
}

另外,我不会在代码和XML中设置属性,因为它只是令人困惑。选择一个或另一个 - 到目前为止,我看到的所有内容都可以通过定义样式资源并将其应用于视图来设置。