### main布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" tools:context="com.example.my.MainActivity"> <com.example.my.MyText android:id="@+id/main_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="复合组件" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="btn" android:text="按钮" /> </LinearLayout>
### textview布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <EditText android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" /> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/base_tabpager_indicator_selected" android:layout_alignRight="@+id/tv" android:visibility="gone" /> </RelativeLayout>
### 新建一个类MyText 继承 Relativelayout
public class MyText extends RelativeLayout { private ImageView imageView; private EditText editText; // public MyText(Context context, AttributeSet attrs) { super(context, attrs); //导入布局 // LayoutInflater.from(context).inflate(R.layout.textview_layout, this, true); LayoutInflater.from(context).inflate(R.layout.textview_layout, this, true); imageView = (ImageView) findViewById(R.id.img); editText = (EditText) findViewById(R.id.tv); imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { editText.setText(""); } }); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (editText.length() == 0) { imageView.setVisibility(INVISIBLE); } else { imageView.setVisibility(VISIBLE); } } }); } }
### MainActivity
public class MainActivity extends AppCompatActivity { private EditText et; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText) findViewById(R.id.tv); } public void btn(View view) { Toast.makeText(MainActivity.this, et.getText(), 0).show(); } }