如何使用新函数扩展TextView

时间:2015-04-20 12:13:19

标签: android class-design

我有以下代码和问题,我的函数rlposition()无法从课外获得。

public class RLbadge extends TextView {

    public RLbadge(Context context) {
        super(context);
        this.setTypeface(null, Typeface.BOLD);
        this.setTextColor(Color.WHITE);
        this.setBackgroundResource(R.drawable.badge);
        this.setTextSize(18);
    }

    public void rlposition(Button pButton) {
        // THIS FUNCTION ISNT SEEN FROM OUTSIDE WHY?
    }

    protected void onDraw (Canvas canvas) {
        super.onDraw(canvas);
    }
}

为什么函数rlposition从类外部不可见? 是不是可以为扩展的TextView添加功能?

2 个答案:

答案 0 :(得分:2)

 <YOURPACKAGENAME.MyTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="32sp"
        android:text="TEASTING" />

这是Class

    public class MyTextView extends TextView {

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

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

    }

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

    private void init(AttributeSet attrs) {
        // Do your staff
        }
    }

}

答案 1 :(得分:1)

我现在为自己回答了这个问题并把它放在这里也许有人在将来需要答案。

问题在于这句话:

TextView badgeInfoscan = new RLbadge(this);
badgeInfoscan.rlposition(); // here the error comes

更改为

RLbadge badgeInfoscan = new RLbadge(this);
badgeInfoscan.rlposition(); // the function is visible