package net.feelingtech.example_work.custom.productitemlayout; import android.content.Context; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import net.feelingtech.example_work.R; /** * Created by ZLM on 2018/5/17. * Describe 自定义RelativeLayout */ public class ProductItemLayout extends RelativeLayout { private ImageView mItem_product_icon; private TextView mItem_product_title; private TextView mItem_product_new; private TextView mItem_product_percent; private RelativeLayout mItem_product_new_rl; private RelativeLayout mItem_product_percent_rl; public ProductItemLayout(Context context) { this(context, null); } public ProductItemLayout(Context context, AttributeSet attrs) { this(context, attrs, 0); } public ProductItemLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); View view = LayoutInflater.from(context).inflate(R.layout.product_item_layout, this); initView(view); initAttrs(context, attrs); } private void initAttrs(Context context, AttributeSet attrs) { TypedArray typedArray = context.obtainStyledAttributes(R.styleable.ProductItemLayout); int indexCount = typedArray.getIndexCount(); for (int i = 0; i < indexCount; i++) { initAttr(typedArray.getIndex(i), typedArray); } typedArray.recycle(); } private void initAttr(int attr, TypedArray typedArray) { if (attr == R.styleable.ProductItemLayout_item_product_icon) { //设置图标 setProductIcon(typedArray.getDrawable(attr)); } if (attr == R.styleable.ProductItemLayout_item_product_title) { setProductTitle(typedArray.getText(attr)); } if (attr == R.styleable.ProductItemLayout_item_product_new) { setProductNew(typedArray.getText(attr)); } if (attr == R.styleable.ProductItemLayout_item_product_percent) { setProductPercent(typedArray.getText(attr)); } if (attr == R.styleable.ProductItemLayout_item_product_percent_isshow) { boolean isShow = typedArray.getBoolean(attr, false); setProductPercentIsShow(isShow); } if (attr == R.styleable.ProductItemLayout_item_product_new_isshow) { boolean isShow = typedArray.getBoolean(attr, false); setProductNewIsShow(isShow); } } public void setProductNewIsShow(boolean isShow) { if (isShow) { mItem_product_new_rl.setVisibility(VISIBLE); } else { mItem_product_new_rl.setVisibility(GONE); } } public void setProductPercentIsShow(boolean isShow) { if (isShow) { mItem_product_percent_rl.setVisibility(VISIBLE); } else { mItem_product_percent_rl.setVisibility(GONE); } } public void setProductPercent(CharSequence text) { mItem_product_percent.setText(text); } public void setProductNew(CharSequence text) { mItem_product_new.setText(text); } private void initView(View view) { //图标 mItem_product_icon = view.findViewById(R.id.item_product_icon); //标题 mItem_product_title = view.findViewById(R.id.item_product_title); //是否有新的内容 mItem_product_new = view.findViewById(R.id.item_product_new); //百分率 mItem_product_percent = view.findViewById(R.id.item_product_percent); //是否有新的内容是否显示提示 mItem_product_new_rl = view.findViewById(R.id.item_product_new_rl); //百分率是否显示 mItem_product_percent_rl = view.findViewById(R.id.item_product_percent_rl); } public void setProductIcon(Drawable productIcon) { mItem_product_icon.setImageDrawable(productIcon); } public void setProductTitle(CharSequence productTitle) { mItem_product_title.setText(productTitle); } }
布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:gravity="center_vertical" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/item_product_icon" android:layout_width="30dp" android:layout_height="30dp" android:layout_centerHorizontal="true" android:layout_marginBottom="10dp" android:src="@drawable/finance_icon01"/> <TextView android:id="@+id/item_product_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="益民理财" android:layout_below="@id/item_product_icon" android:textColor="@color/black" android:textSize="12sp"/> <RelativeLayout android:id="@+id/item_product_new_rl" android:layout_width="wrap_content" android:layout_height="12dp" android:layout_alignBaseline="@id/item_product_title" android:layout_marginLeft="5dp" android:layout_toRightOf="@id/item_product_title" android:background="#EE6147" android:gravity="center"> <TextView android:id="@+id/item_product_new" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="2dp" android:paddingRight="2dp" android:text="NEW" android:textColor="@color/white" android:textSize="10dp"/> </RelativeLayout> <RelativeLayout android:id="@+id/item_product_percent_rl" android:layout_width="wrap_content" android:layout_height="18dp" android:layout_alignTop="@id/item_product_icon" android:layout_marginLeft="-5dp" android:layout_marginTop="-10dp" android:layout_toRightOf="@id/item_product_icon" android:background="#EE6147" android:gravity="center_vertical" android:padding="2dp"> <TextView android:id="@+id/item_product_percent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="2dp" android:paddingRight="2dp" android:text="6%-7%" android:textColor="@color/white" android:textSize="10dp"/> </RelativeLayout> </RelativeLayout>
attr文件:
<declare-styleable name="ProductItemLayout"> <attr name="item_product_icon" format="reference"/> <attr name="item_product_title" format="reference|string"/> <attr name="item_product_new" format="reference|string"/> <attr name="item_product_percent" format="reference|string"/> <attr name="item_product_percent_isshow" format="reference|boolean"/> <attr name="item_product_new_isshow" format="reference|boolean"/> </declare-styleable>
===========================================================
使用:
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="100dp"> <net.feelingtech.example_work.custom.productitemlayout.ProductItemLayout android:id="@+id/pil_jr" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="match_parent"> </net.feelingtech.example_work.custom.productitemlayout.ProductItemLayout> <net.feelingtech.example_work.custom.productitemlayout.ProductItemLayout android:layout_weight="1" android:layout_width="match_parent" android:layout_height="match_parent"> </net.feelingtech.example_work.custom.productitemlayout.ProductItemLayout> <net.feelingtech.example_work.custom.productitemlayout.ProductItemLayout android:layout_weight="1" android:layout_width="match_parent" android:layout_height="match_parent"> </net.feelingtech.example_work.custom.productitemlayout.ProductItemLayout> </LinearLayout>
mPilJr.setProductIcon(getResources().getDrawable(R.drawable.tab_icon_home)); mPilJr.setProductTitle("金融"); mPilJr.setProductNewIsShow(true); mPilJr.setProductNew("NNN"); mPilJr.setProductPercentIsShow(true); mPilJr.setProductPercent("6%-9%");