Android中自己定义组件和它的属性

it2025-06-24  8

好长时间没有更新博客了。本来想积累点有深度的东西发,但一直没有找到非常好的点。所以。写一些基础的东西。就当积累吧。

Android开发中难免会用到自己定义的组件。以下以ImageButton为例来介绍怎么自己定义组件和它的属性: 第一步、在values/attrs.xml中为组件自己定义属性: <?xml version="1.0" encoding="utf-8"?> <resources>     <declare-styleable name="CustomBtn">         <attr name="text" format="string"/>         <attr name="textColor" format="color" />         <attr name="textSize" format="dimension" />     </declare-styleable> </resources> 第二步、重写ImageButton类: public class CustomBtn extends ImageButton {  private Paint paint;  private String text;    public CustomBtn(Context context, AttributeSet attrs)  {   super(context, attrs);     paint=new Paint();   TypedArray typeArray=context.obtainStyledAttributes(attrs,R.styleable.CustomBtn);   int color=typeArray.getColor(R.styleable.CustomBtn_textColor,Color.WHITE);   float textSize=typeArray.getDimension(R.styleable.CustomBtn_textSize,20);   text=typeArray.getString(R.styleable.CustomBtn_text);     paint.setTextAlign(Align.CENTER);   paint.setColor(color);   paint.setTextSize(textSize);   typeArray.recycle();  }    @Override  protected void onDraw(Canvas canvas)  {   super.onDraw(canvas);   canvas.drawText(text,canvas.getWidth()/2,canvas.getHeight()/2+10, paint);  }  public String getText() {   return text;  }  public void setText(String text) {   this.text = text;  } } 第三步、在布局文件里使用CustomBtn: 当中xmlns:custombtn中为AndroidManifest.xml中的包名 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custombtn="http://schemas.android.com/apk/res/com.yeahis.shuyudragstore" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="@dimen/market_category_height" android:background="@drawable/mall_category_item"> <com.yeahis.shuyudragstore.widget.CustomBtn android:id="@+id/mall_category_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:background="@android:color/transparent" android:src="@drawable/mall_category_title" custombtn:text="@string/mall_category_title" custombtn:textColor="@android:color/black" custombtn:textSize="15sp"/> </RelativeLayout> 第四步、假设想要在程序中动态改变 CustomBtn上的文字则在程序中这样: 比如CustomBtn customBtn=(CustomBtn) convertView.findViewById(R.id.mall_category_btn); customBtn.setText("在程序中加入的文字");

转载于:https://www.cnblogs.com/bhlsheji/p/5251625.html

最新回复(0)