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填充的
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}" >
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mybtn"
android:background="#00ffdd"
/>
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);
}
}