为了账号安全,请及时绑定邮箱和手机立即绑定

为什么xml里面显示不出自定义的按钮和TextView

public class MyView extends RelativeLayout {

    private Button rightBtn,LeftBtn;
    private TextView tvTitle;

    private String TitleText;
    private float TitleSize;
    private int TitleColor;

    private String LeftText;
    private Drawable leftBackground;
    private int LeftColor;

    private String rightText;
    private Drawable rightBackground;
    private int rightColor;
    
    private LayoutParams leftParams,rightParams,TitleParmas;

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);

        TypedArray ta = context.obtainStyledAttributes(attrs,R.styleable.TopBar);

        LeftText  = ta.getString(R.styleable.TopBar_LeftTitle);
        leftBackground = ta.getDrawable(R.styleable.TopBar_LeftTitleBackground);
        LeftColor = ta.getColor(R.styleable.TopBar_LeftTitleTextColor,0);

        rightText  = ta.getString(R.styleable.TopBar_RightTitle);
        rightBackground = ta.getDrawable(R.styleable.TopBar_RightTitleBackground);
        rightColor = ta.getColor(R.styleable.TopBar_RightTitleTextColor,0);

        TitleText  = ta.getString(R.styleable.TopBar_Title);
        TitleSize = ta.getDimension(R.styleable.TopBar_TitleTextSize,0);
        TitleColor = ta.getColor(R.styleable.TopBar_TitleTextColor,0);

        ta.recycle();

        LeftBtn = new Button(context);
        rightBtn = new Button(context);
        tvTitle = new TextView(context);

        LeftBtn.setText(LeftText);
        LeftBtn.setBackground(leftBackground);
        LeftBtn.setTextColor(LeftColor);

        rightBtn.setText(rightText);
        rightBtn.setBackground(rightBackground);
        rightBtn.setTextColor(rightColor);

        tvTitle.setText(TitleText);
        tvTitle.setTextSize(TitleSize);
        tvTitle.setTextColor(TitleColor);
        tvTitle.setGravity(Gravity.CENTER);

        setBackgroundColor(0xFFF59563);
        
        leftParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        leftParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT,TRUE);
        
        addView(LeftBtn,leftParams);

        rightParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        rightParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,TRUE);

        addView(rightBtn,rightParams);

        TitleParmas = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
        TitleParmas.addRule(RelativeLayout.CENTER_IN_PARENT,TRUE);

        addView(tvTitle,TitleParmas);

    }

5773c7a40001e87705000283.jpg

5773c7a500018bb705000442.jpg


正在回答

4 回答

如果出现命名空间找不到的问题,一定要注意,declare 中声明的name 一定要和建立的Java文件的名字一模一样!

0 回复 有任何疑惑可以回复我~

@西瓜牛奶你的问题解决没,我也遇到一样的问题了

0 回复 有任何疑惑可以回复我~
#1

西瓜牛奶 提问者

我的解决了,是构造方法的问题,如果有自定义属性的话,应该用三个参数的构造方法
2016-08-03 回复 有任何疑惑可以回复我~

把自定义的属性在xml中都写全就显示出来了。还有要注意当前model中的自定义属性是否同其他定义的属性重名(如果重名,会R报错)。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android UI模板设计
  • 参与学习       76061    人
  • 解答问题       223    个

快来学习如何在Android中自定义View,本次课程一定会让你获益匪浅

进入课程

为什么xml里面显示不出自定义的按钮和TextView

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信