标签 include的使用
布局定义的XML文件中重复的布局设置代码较多时,可以使用include标签进行布局代码优化
在这里我写了一个标题栏的布局优化,title_item.xml文件
title_item.xml布局代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/title_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp" >
<ImageView
android:id="@+id/iv_goback"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
/>
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="20sp"
android:textColor="#ffffff"
/>
</RelativeLayout>
在activity_main.xml文件中利用include标签,设置layout属性layout=”@layout/title_item”
代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.zz.guojin.includedemo.MainActivity">
<include layout="@layout/title_item"/>
<TextView
android:id="@+id/tv_hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</LinearLayout>
然后创建TitleBuilder.java 设置布局title_item.xml中各种控件的属性
package com.zz.guojin.includedemo.builder;
import android.app.Activity;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.zz.guojin.includedemo.R;
/**
* Created by Administrator on 2016/9/29.
*/
public class TitleBuilder {
private View title;
private TextView tv_title;
private ImageView iv_title;
public TitleBuilder(Activity context){
title = context.findViewById(R.id.title_bar);
tv_title = (TextView) title.findViewById(R.id.tv);
iv_title = (ImageView) title.findViewById(R.id.iv_goback);
}
/**
* 设置背景颜色
* @param resid
* @return
*/
public TitleBuilder setBackGroundColor(int resid){
title.setBackgroundResource(resid);
return this;
}
/**
* 设置标题栏的标题
* @param text
* @return
*/
public TitleBuilder setMiddleTitleText(String text){
tv_title.setVisibility(TextUtils.isEmpty(text)?View.GONE:View.VISIBLE);
tv_title.setText(text);
return this;
}
/**
* 设置图标
* @param resid
* @return
*/
public TitleBuilder setImageRes(int resid){
iv_title.setVisibility((resid>0) ?View.VISIBLE:View.GONE);
iv_title.setImageResource(resid);
return this;
}
/**
*标题图标点击监听
* @return
*/
public TitleBuilder setImgOnClickLisener(View.OnClickListener lisener){
if(iv_title.getVisibility()==View.VISIBLE){
iv_title.setOnClickListener(lisener);
}
return this;
}
public View build(){
return title;
}}
在Acvitity中的代码如下:
public class MainActivity extends AppCompatActivity {
private TitleBuilder titleBuilder;
private TextView textView;
private View view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initVew();
}
public void initVew(){
textView = (TextView) findViewById(R.id.tv_hello);
titleBuilder =new TitleBuilder(this).setMiddleTitleText("管理")
.setImageRes(R.mipmap.ic_launcher)
.setImgOnClickLisener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
此上代码,希望对初学者们有帮助