继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

android自定义控件理解

慕妹3146593
关注TA
已关注
手记 107
粉丝 14
获赞 39

public View (Context context)是在java代码创建视图的时候被调用,如果是从xml填充的视图,就不会调用这个
public View (Context context, AttributeSet attrs)这个是在xml创建但是没有指定style的时候被调用
public View (Context context, AttributeSet attrs, int defStyle)

所以在有两个参数的构造函数内初始化,因为在mainactivity.xml里其是通过xml填充的

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >
    <com.example.personalview.MyButton
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/mybtn"
        android:background="#00ffdd"
        />
</LinearLayout>

public class MyButton extends LinearLayout {
ImageView image;
TextView text;
public MyButton(Context context) {
super(context);
}
 public MyButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(R.layout.mybutton, this);
        image=(ImageView) findViewById(R.id.image);
        text=(TextView)findViewById(R.id.text);
    }
     
public void setImage(int res)
{
image.setImageResource(res);
}
public void setText(String str)
{
text.setText(str);
}
}

原文链接:http://www.apkbus.com/blog-669109-59088.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP