android经常离不开常用的标题栏,分别左侧按钮 ,中间的标题栏,右侧的按钮组成 或者是 分别左侧文本 ,中间的标题栏,右侧的文本组成。在开发的实际过程中会右很多这种样式相同的页面,如果每一次都写,就会特别麻烦。如果通过自定义一个组合控件来设置就可以简化布局时的代码量
代码入下:
import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; /** * 自定义万能的顶部导航栏 * */ public class CustomNagivationView extends LinearLayout{ private View view; private ImageView iv_left;//左侧图标 private ImageView iv_right;//右侧图标 private TextView tv_left;//左侧文本 private TextView tv_right;//右侧文本 private TextView tv_title;//中间文本 public CustomNagivationView(Context context) { this(context,null,0); } public CustomNagivationView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CustomNagivationView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context); } private void initView(Context context) { view=View.inflate(context,R.layout.custom_nagavtion_view,this); iv_left= (ImageView) view.findViewById(R.id.iv_left); iv_right= (ImageView) view.findViewById(R.id.iv_right); tv_left= (TextView) view.findViewById(R.id.tv_left); tv_right= (TextView) view.findViewById(R.id.tv_right); tv_title= (TextView) view.findViewById(R.id.tv_title); } //设置左侧imageView控件的显示与隐藏 public void setLeftImageisible(int Visiblity){ iv_left.setVisibility(Visiblity); } //设置右侧imageView控件的显示与隐藏 public void setRightImageisible(int Visiblity){ iv_right.setVisibility(Visiblity); } //设置左侧imageView控件的 public void setLeftImageRes(int drawable){ iv_left.setImageResource(drawable); } //设置右侧imageView控件的显示与隐藏 public void setRightImageRes(int drawable){ iv_right.setImageResource(drawable); } //设置左侧文本控件控件的显示与隐藏 public void setLeftTextisible(int Visiblity){ tv_left.setVisibility(Visiblity); } //设置左侧文本控件的显示与隐藏 public void setRightTextisible(int Visiblity){ tv_left.setVisibility(Visiblity); } //设置左侧文本的内容 public void setLeftTextView(String content){ tv_left.setText(content); } //设置右侧文本的内容 public void setRightTextView(String content){ tv_right.setText(content); } //设置标题文本的内容 public void setTitleTextView(String content){ tv_title.setText(content); } }
其中的布局文件:
<?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="match_parent"> <ImageView android:id="@+id/iv_left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true"/> <TextView android:id="@+id/tv_left" android:visibility="gone" android:layout_alignParentLeft="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="左侧文本" /> <TextView android:id="@+id/tv_title" android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv_right" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/iv_right" android:visibility="gone" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
测试:
public class MainActivity extends AppCompatActivity { private CustomNagivationView customNagivationView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); customNagivationView= (CustomNagivationView) findViewById(R.id.myView); customNagivationView.setLeftImageisible(View.GONE); customNagivationView.setRightImageisible(View.GONE); customNagivationView.setLeftTextisible(View.VISIBLE); customNagivationView.setRightTextisible(View.VISIBLE); customNagivationView.setLeftTextView("左侧文本"); customNagivationView.setRightTextView("右侧文本"); customNagivationView.setTitleTextView("我是标题"); } }
main布局如下:
<?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" > <com.slh8.customswiprefresh.CustomNagivationView android:id="@+id/myView" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>