自定义组合控件:
以三国杀游戏武将为例,包括武将头像,血条,装备区
1.先定义该组合的XML文件布局
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="/apk/res/android" 3android:layout_width="wrap_content" 4android:layout_height="wrap_content" 5android:orientation="horizontal" > 6<LinearLayout 7 android:layout_width="wrap_content" 8 android:layout_height="wrap_content" 9 android:orientation="vertical"10 >11 <ImageView12 android:id="@+id/touxiang"13 android:layout_width="80dp"14 android:layout_height="80dp"15 android:maxWidth="80dp"16 android:maxHeight="80dp" 17 >18 </ImageView>19 <ImageView20 android:id="@+id/blood"21 android:layout_width="wrap_content"22 android:layout_height="wrap_content"23 android:maxWidth="80dp"24 android:maxHeight="20dp"25 > 26 </ImageView>27 28</LinearLayout>2930<LinearLayout31 android:layout_width="wrap_content"32 android:layout_height="wrap_content"33 android:orientation="vertical"34 android:layout_gravity="center_vertical"35 >36 <TextView37 android:layout_width="wrap_content"38 android:layout_height="wrap_content"39 android:text="武器"40 ></TextView>41 <TextView42 android:layout_width="wrap_content"43 android:layout_height="wrap_content"44 android:text="防具"45 ></TextView>46 <TextView47 android:layout_width="wrap_content"48 android:layout_height="wrap_content"49 android:text="+1马"50 ></TextView>51 <TextView52 android:layout_width="wrap_content"53 android:layout_height="wrap_content"54 android:text="-1马"55 ></TextView>56</LinearLayout>57 58 </LinearLayout>
2.自定义一个继承布局的类
public class GeneralFrame extends LinearLayout {ImageView general;ImageView blood;TextView wuqi;TextView fangju;TextView jiayima;TextView jianyima;public GeneralFrame(Context context) {//super(context);// TODO Auto-generated constructor stubthis(context,null);}public GeneralFrame(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub//在构造函数中将Xml中定义的布局解析出来。 LayoutInflater.from(context).inflate(R.layout.generalframe, this, true); general=(ImageView)findViewById(R.id.touxiang);blood=(ImageView)findViewById(R.id.blood);blood.setImageResource(R.drawable.blood);//wuqi=(TextView)findViewById(R.id}
可在XML文件里调用该类
< com.layouts.uitest.GeneralFrameandroid:layout_height="wrap_content"android:layout_width="wrap_content"/>
也可以在代码中动态添加该类
GeneralFrame general=new GeneralFrame(this);general.setGeneralImage(R.drawable.diaochan);linear2.addView(general);
自定义View.
自定义类继承View
public class MyView extends View{public MyView (Context c,AttributeSet set){}@Overridepublic void onDraw(Canvas canvas){} }
调用方法同自定义控件一样。
自定义View的构造方法一定要选中public MyView (Context c,AttributeSet set),系统会回调该构造方法
如果觉得《Android自定义View 自定义组合控件》对你有帮助,请点赞、收藏,并留下你的观点哦!