1.组合控件的布局文件 textwithedittext.xml
样式1.png
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="#fff"
android:orientation="horizontal">
<TextView
android:id="@+id/left_text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="8dp"
android:gravity="center_vertical"
android:text="左侧文本"
android:textSize="16dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:gravity="center_vertical"
android:text=":"
android:textSize="18dp"/>
<EditText
android:id="@+id/right_edittext"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:background="@null"
android:hint="输入框文本"/>
</LinearLayout>
2.在values/attrs.xml写一个自定义属性
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="mygroupview" >
<attr name="textName" format="string"/> //左侧文本名称
<attr name="et_hint" format="string"/> //edittext的hint内容
</declare-styleable>
</resources>
3.新建一个类,并给出set get方法
package com.example.a1.testtest;
import android.content.Context;
import android.content.res.TypedArray;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
/**
* Created by liudehua on 2017/5/17.
*/
public class TextWithEdittextView extends LinearLayout {
private View mView;
private TextView MTextView;
private EditText mEdittext;
private TypedArray mAttributes;
public TextWithEdittextView(@NonNull Context context) {
super(context);
}
/**
* 在含有AttributeSet attrs
* 的构造方法中做处理*/
public TextWithEdittextView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initView();//初始化你的布局文件
/**
* 获取属性集
* 此处的mygroupview对应你在attrs中的name
* <declare-styleable name="mygroupview" >
* */
mAttributes = context.obtainStyledAttributes(attrs, R.styleable.mygroupview);
MTextView.setText(mAttributes.getString(R.styleable.mygroupview_textName));
mEdittext.setHint(mAttributes.getString(R.styleable.mygroupview_et_hint));
}
private void initView() {
mView = LayoutInflater.from(getContext()).inflate(R.layout.textwithedittext, this,true);
MTextView = (TextView)mView.findViewById(R.id.left_text);
mEdittext = (EditText)mView.findViewById(R.id.right_edittext);
}
public void setTextLeft(String str) {
MTextView.setText(str);
}
public String getTextLeft() {
return MTextView.getText().toString();
}
public void setHint(String string) {
mEdittext.setHint(string);
}
public String getEdittext() {
return mEdittext.getText().toString();
}
}
4.使用
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:linc="http://schemas.android.com/apk/res/com.example.a1.testtest"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.a1.testtest.TextWithEdittextView
android:id="@+id/siv"
android:layout_width="match_parent"
android:layout_height="60dp"
linc:et_hint="hint"
linc:textName="asas">
</com.example.a1.testtest.TextWithEdittextView>
<TextView
android:id="@+id/textaaaa"
android:layout_width="50dp"
android:layout_height="50dp"
android:text="000"/>
</LinearLayout>
自定义命名空间 必须加上 格式为:xmlns:“随便写”="http://schemas.android.com/apk/res/包名"
xmlns:linc="http://schemas.android.com/apk/res/com.example.a1.testtest"