直接上图:
首先自定义一个布局xml 然后在继承 RelativeLayout的类中进行查找(将布局文件初始化为控件)然后在主xml中把这个类当成一个控件来引入
那么首先上主xml中的代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="bawe.day1105lianxijiekou.MainActivity"> <bawe.day1105lianxijiekou.ToubuView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/toubu" > </bawe.day1105lianxijiekou.ToubuView> </LinearLayout>==========================================================
MainActivity 类中:
package bawe.day1105lianxijiekou; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到自定义控件 ToubuView toubu= (ToubuView) findViewById(R.id.toubu); //调用自定义控件接口中的方法 toubu.OnTitleClickListener(new ToubuView.OnTitleClickListener() { @Override public void onLeftClick(View v) { finish(); } @Override public void onRightClick(View v) { Intent intent = new Intent(MainActivity.this,Main2Activity.class); startActivity(intent); } }); } }====================================================
ToubuView类:
package bawe.day1105lianxijiekou; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; public class ToubuView extends RelativeLayout{ private OnTitleClickListener listener; //定义一个对外提供的接口 interface OnTitleClickListener{ void onLeftClick(View v); void onRightClick(View v); } //定义一个对外提供调用接口的方法(有参构造) public void OnTitleClickListener(OnTitleClickListener listener){ if(listener!=null){ this.listener=listener; } } public ToubuView(Context context) { this(context,null); } public ToubuView(Context context, AttributeSet attrs) { this(context, attrs,0); } public ToubuView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context, attrs, defStyleAttr); } private void initView(Context context, AttributeSet attrs, int defStyleAttr) { //将布局文件初始化为控件 View.inflate(context,R.layout.title_view,this); //获取控件 TextView left_but= (TextView)findViewById(R.id.tx_zuo); ImageView Right_but= (ImageView)findViewById(R.id.tx_you); //给控件添加点击事件 left_but.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { //调用接口中的自定义的方法 listener.onLeftClick(view); } }); Right_but.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { //调用接口中的自定义的方法 listener.onRightClick(view); } }); } }=======================================================
自定义布局xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" android:background="#f00" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="<" android:textSize="20dp" android:id="@+id/tx_zuo" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="那些花儿" android:layout_gravity="center_horizontal" android:layout_alignParentTop="true" android:layout_toEndOf="@+id/tx_zuo" android:layout_marginStart="142dp" android:textSize="20dp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/wode1" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:id="@+id/tx_you" /> </RelativeLayout>===============================================================
写这篇文章的意义主要是体现一个接口回调的简单的方法 ,容易理解