2 taocgz taocgz 于 2016.09.08 11:20 提问

自定义复合控件,这段代码有什么错误,在布局里显示不了。 2C

public class Payment extends RelativeLayout {

private ImageView mImageView;
private TextView mTextView;
private RadioButton mRadioButton;

public Payment(Context context){
    this(context, null);
}

public Payment(Context context, AttributeSet attrs){
    this(context, null, 0);
}

public Payment(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    // TODO Auto-generated constructor stub
    TypedArray mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.payment);//获取自定义属性和默认值             
    int paymentLogoRes = mTypedArray.getInt(R.styleable.payment_paymentlogores, R.drawable.other);
    int paymentLogoId = mTypedArray.getInt(R.styleable.payment_paymentlogoid, 0);   
    String paymentName = mTypedArray.getString(R.styleable.payment_paymentname);
    int paymentNameId = mTypedArray.getInt(R.styleable.payment_paymentnameid, 0);
    int paymentradiobuttonid = mTypedArray.getInt(R.styleable.payment_paymentradiobuttonid, 0);
    mTypedArray.recycle();

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    mImageView = new ImageView(context);

    lp.addRule(RelativeLayout.CENTER_VERTICAL);
    mImageView.setLayoutParams(lp);
    mImageView.setId(paymentLogoId);
    mImageView.setImageResource(paymentLogoRes);

    mTextView = new TextView(context);
    lp.addRule(RelativeLayout.ALIGN_RIGHT, mImageView.getId());
    lp.setMargins(10, 0, 0, 0);
    mTextView.setLayoutParams(lp);
    mTextView.setId(paymentNameId);
    mTextView.setText(paymentName);

    mRadioButton = new RadioButton(context);
    lp.addRule(RelativeLayout.ALIGN_RIGHT, 0);
    lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
    lp.setMargins(0, 0, 0, 0);
    mRadioButton.setLayoutParams(lp);
    mRadioButton.setId(paymentradiobuttonid);
    mRadioButton.setClickable(false);      

    setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            mRadioButton.setChecked(true);
        }
    });

}

public void setPaymentName(String name) {
    mTextView.setText(name);
}

public void setPaymentLogo(int resId) {
    mImageView.setImageResource(resId);
}

public View getRadioButton() {
    return mRadioButton;
}

}


2个回答

qq_24827089
qq_24827089   2016.09.08 14:45

你都没有把new好的控件addView到父控件中,肯定没显示。

taocgz
taocgz   2016.09.22 17:24

最近忙于其他事,没来的及恢复,我试一下。谢谢。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android之——自定义复合控件的实现
有一定Android开发经验的童鞋都知道,有时候Android提供的原生视图无法满足我们自己项目的业务需求,这就需要我们自己去自定义Android控件了,在很多情况下,需要我们自己去将很多控件(Android原生控件,自定义控件)组合起来,生成一个新的视图来满足我们自己项目的业务需求。好了,本文就是向大家介绍如何自定义Android复合控件,我在这篇文章中,以一个文本框和按钮组合成一个复合控件来向
自定义复合控件
public class MainActivity extends AppCompatActivity { private MyViewGroup mygroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)
自定义复合控件并进行封装
1.创建了一个常用的复合控件,标题栏 2.为该控件添加自定义的属性值 3.为该控件添加自定义的接口 但是这个类似的布局很常用,所以就想把它封装起来,通过这个封装来学习以下三点 1.创建了一个常用的复合控件,标题栏 2.为该控件添加自定义的属性值 3.为该控件添加自定义的接口 首先我们要先想好该控件的自定义属性 在res/values下创建  attrs.xml文件 写入以下代码
《Android 群英传》读书笔记:自定义 View 之创建复合控件
转载请注明出处: http://blog.csdn.net/like_program/article/details/53164867 创建复合控件可以很好地创建出具有重用功能的控件集合。这种方式通常需要继承一个合适的 ViewGroup,再给它添加指定功能的控件,从而组合成新的复合控件。通过这种方式创建的控件,我们一般会给它指定一些可配置的属性,让它具有更强的拓展性。下面以一个 TopBar 为例
Android创建自定义复合控件
在Android中,复合控件是非常常见的,下面以创建一个标题栏为例,讲解创建自定义复合控件的过程。     以下图为例:我们要创建一个标题栏,这个标题栏是有左边的Button、右边的Button以及中间的TextView复合而成的,而我们希望能够直接在这个自定义标题栏设置里面的Button和TextView的信息。                              具体代码过程如下:
这段代码最后两行有什么作用
if(cmdOk  == command)         {             bmkNew.title = tfTitle.getString();             if( (bmkNew.title == null) || (0  == bmkNew.title.length()))             {                 bmkNew.title
xml布局里面的requestFocus 有什么用
如题:                   android:id="@+id/username"                 android:layout_width="0dp"                 android:layout_height="match_parent"                 android:layout_weight="1"             
MyCompoundView自定义复合控件
复合控件的创建及使用 详见博文http://blog.csdn.net/a87b01c14/article/details/50350405
自定义复合控件范例
自定义复合控件开发范例 win7风格 美化外观扩展 很适合控件开发入门学习使用 含源码
自定义View 之 创建复合控件
创建复合控件以很好的创建出具有重用功能的控件集合。这种方式通常需要继承一个合适的ViewGroup,再给他添加指定功能的控件从而组合成新的复合控件。1.自定义的TopBar的属性集合<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="TopBar"> <attr name="t