自定义组合控件

来源:互联网 发布:系统同传软件 编辑:程序博客网 时间:2024/05/14 10:46

项目中时常会用到相同的布局,如果每个页面都复制一遍,然后改一下Id,这样的当然可以,不过,不免麻烦,

们就写一个自己的布局,即自定义组合控件。

我们就以典型的头最为模型,来开始我们的自定义组合控件,其实很简单。

1.先写一个布局,给上Id,定好样式:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="50dp"    android:background="#3fc500">    <RelativeLayout        android:id="@+id/back"        android:layout_width="60dp"        android:layout_height="match_parent">        <ImageView            android:layout_width="20dp"            android:layout_height="20dp"            android:src="@mipmap/back"            android:layout_centerVertical="true"            android:layout_alignParentLeft="true"            android:layout_alignParentStart="true"            android:layout_marginLeft="15dp"/>    </RelativeLayout>    <TextView        android:id="@+id/textView"        android:layout_width="wrap_content"        android:layout_height="50dp"        android:gravity="center"        android:text="我的"        android:textColor="#ffffff"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:textSize="20sp" /></RelativeLayout>
2.新建一个自定义的类TitleView:

public class TitleView extends RelativeLayout {    private RelativeLayout relativeLayout;    private TextView textView;    public TitleView(Context context, AttributeSet attrs) {        super(context, attrs);        //加载布局        LayoutInflater.from(context).inflate(R.layout.title_bar, this);        //查找控件        relativeLayout = (RelativeLayout) findViewById(R.id.back);        textView = (TextView) findViewById(R.id.textView);    }    //RelativityLayout的点击监听    public void setRelativeLayoutListener(OnClickListener listener) {        relativeLayout.setOnClickListener(listener);    }    //为Text设置标题    public void setTitleText(String title){        textView.setText(title);    }}

3.使用:只需要像使用普通控件一样使用就可以了:

public class SecondActivity extends AppCompatActivity {    private TitleView titleView;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);        titleView = (TitleView) findViewById(R.id.title2);        findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                startActivity(new Intent(SecondActivity.this, ThirdActivity.class));            }        });        titleView.setRelativeLayoutListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                finish();            }        });        titleView.setTitleText("第二个Activity");    }}

Demo下载

0 0
原创粉丝点击