1.自定义组件(按钮)xml文件如下
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/id_paste_button" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/bottom_item_selector" android:gravity="center" android:orientation="vertical" android:paddingBottom="4dp" android:paddingTop="4dp" > <ImageView android:id="@+id/btn_icon" android:layout_width="24dp" android:layout_height="24dp" android:src="@drawable/paste" /> <TextView android:id="@+id/btn_txt" style="@style/myTextApprearence.micro.white" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/tab_paste" /> </LinearLayout>
2.这个按钮有两个属性是变的,一个是图片,一个是文字,在res/values/attrs.xml文件自定义两个属性:text, icon
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="BottomBarButton" > <attr name="android:text" type="text" /> <attr name="android:icon" type="drawable" /> </declare-styleable> </resources>
java代码对这个自定义控件进行赋值
public class BottomBarBtn extends LinearLayout{ public BottomBarBtn(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.bottom_bar_button, this, true); TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.BottomBarButton); //获取自定义属性‘text‘的值 CharSequence iconDesc = ta.getText(R.styleable.BottomBarButton_android_text); //获取自定义属性‘icon‘的值 Drawable icon = ta.getDrawable(R.styleable.BottomBarButton_android_icon); TextView btnText = (TextView) findViewById(R.id.btn_txt); if(null != iconDesc){ btnText.setText(iconDesc); } ImageView btnIcon = (ImageView) findViewById(R.id.btn_icon); if(null != icon){ btnIcon.setImageDrawable(icon); } ta.recycle(); } }
3.布局文件中使用这个控件
<!--下面的两个属性是自定义的:icon, text--> <com.ui.customview.BottomBarBtn android:id="@+id/id_paste_button" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:icon="@drawable/paste" android:text="@string/tab_paste" />