实现个人中心的页面需要的步骤:
1创建类继承LineLayout
2创建Attrs.xml 自定义属性
3遍历属性
4控件中使用
public class nav_bar extends LinearLayout {
private Context con;
private int inputview_input_icon;
private String inputview_input_hint;
private boolean inputview_is_pass;
private int right_icon;
private View inflate;
ImageView imageView;
TextView editText;
private View tv_search;
public nav_bar(@NonNull Context context) {
super(context);
init(context, null);
this.con=context;
}
public nav_bar(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public nav_bar(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs);
}
private void init(Context context, AttributeSet attrs) {
if(attrs==null){
return;
}
//重点
//获取属性
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.nav);
inputview_input_icon = typedArray.getResourceId(R.styleable.nav_icon, R.mipmap.ic_launcher);
right_icon = typedArray.getResourceId(R.styleable.nav_right_icon, R.mipmap.ic_launcher);
inputview_input_hint = typedArray.getString(R.styleable.nav_hint);
//释放
typedArray.recycle();
inflate = LayoutInflater.from(context).inflate(R.layout.nav_bar, this, false);
//imageView= (ImageView)inflate.findViewById(R.id.tou);
editText= (TextView)inflate.findViewById(R.id.title);
imageView= (ImageView)inflate.findViewById(R.id.back);
imageView.setImageResource(inputview_input_icon);
editText.setText(inputview_input_hint);
//editText.setInputType(inputview_is_pass?);
addView(inflate);
}
<com.example.utils.nav_bar
my:icon="@mipmap/product_info_icon"//更换图标
my:hint=“版本更新” //更换字体
/>
(复制自定义类的路径 )
(粘贴到xml 中)