很多时候,我们些项目的时候,都会有头部的标题栏,同事很多的Activity都会使用到,只是为了减少代码的繁琐层度,我们可以写好一个带标题的Activity基类Activity,需要使用到标题的Activity可以基层改Activity。
首先定义标题栏 layout_title_bar
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_titlebar"
android:layout_width="match_parent"
android:layout_height="52dp"
android:background="#ed4255" >
<TextView
android:id="@+id/text_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:ellipsize="marquee"
android:gravity="center_horizontal|center"
android:singleLine="true"
android:text="标题栏"
android:textColor="#ffffffff"
android:textSize="20dp" />
<TextView
android:id="@+id/button_backward"
android:layout_width="60dp"
android:layout_height="match_parent"
android:drawableLeft="@drawable/back_arrow"
android:drawablePadding="6dp"
android:ellipsize="end"
android:gravity="center"
android:paddingLeft="5dp"
android:singleLine="true"
android:text="返回"
android:textColor="#ffffffff"
android:textSize="18dp"
android:visibility="invisible" />
<TextView
android:id="@+id/button_forward"
android:layout_width="60dp"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:drawablePadding="6dp"
android:ellipsize="end"
android:gravity="center"
android:paddingLeft="5dp"
android:singleLine="true"
android:text="提交"
android:textColor="#ffffffff"
android:textSize="18dp"
android:visibility="invisible" />
</RelativeLayout>
- 定义控制标题栏按钮和标题栏以下内容的布局 activity_abstract_title.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!-- Title --> <include layout="@layout/layout_title_bar" /> <FrameLayout android:id="@+id/layout_content" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#fff" > </FrameLayout> </LinearLayout>
package com.example.basetitleactivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;
/**
* 自定义标题栏 基类
*
* @author haojian12583
*
*/
public class AbstractTitleActivity extends Activity implements OnClickListener {
// private RelativeLayout mLayoutTitleBar;
private TextView mTitleTextView;
private TextView mLeftBackwardbButton;
private TextView mRightForwardButton;
private FrameLayout mContentLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initViews();
}
private void initViews() {
super.setContentView(R.layout.activity_abstract_title);
mTitleTextView = (TextView) findViewById(R.id.text_title);
mContentLayout = (FrameLayout) findViewById(R.id.layout_content);
mLeftBackwardbButton = (TextView) findViewById(R.id.button_backward);
mRightForwardButton = (TextView) findViewById(R.id.button_forward);
mLeftBackwardbButton.setOnClickListener(this);
mRightForwardButton.setOnClickListener(this);
}
/**
是否显示返回按钮
* @param backwardResid 文字
* @param show true则显示
*/
public void isShowLeftView(int leftResid, boolean show) {
if (mLeftBackwardbButton != null) {
if (show) {
mLeftBackwardbButton.setText(leftResid);
mLeftBackwardbButton.setVisibility(View.VISIBLE);
} else {
mLeftBackwardbButton.setVisibility(View.INVISIBLE);
}
} // else ignored
}
/**
* 是否显示返回按钮
* @param backwardResid 文字
* @param show true则显示
*/
public void isShowRightView(int rightResid, boolean show) {
if (mRightForwardButton != null) {
if (show) {
mRightForwardButton.setText(rightResid);
mRightForwardButton.setVisibility(View.VISIBLE);
} else {
mRightForwardButton.setVisibility(View.INVISIBLE);
}
} // else ignored
}
/**
* 返回按钮点击后触发
* @param backwardView
*/
protected void onLeftBackward(View backwardView) {
Toast.makeText(this, "点击返回,可在此处调用finish()", Toast.LENGTH_LONG).show();
//finish();
}
/**
* 提交按钮点击后触发
* @param forwardView
*/
protected void onRightForward(View forwardView) {
Toast.makeText(this, "点击提交", Toast.LENGTH_LONG).show();
}
//设置标题内容
@Override
public void setTitle(int titleId) {
mTitleTextView.setText(titleId);
}
//设置标题内容
@Override
public void setTitle(CharSequence title) {
mTitleTextView.setText(title);
}
//设置标题文字颜色
@Override
public void setTitleColor(int textColor) {
mTitleTextView.setTextColor(textColor);
}
//取出FrameLayout并调用父类removeAllViews()方法
@Override
public void setContentView(int layoutResID) {
mContentLayout.removeAllViews();
View.inflate(this, layoutResID, mContentLayout);
onContentChanged();
}
@Override
public void setContentView(View view){
mContentLayout.removeAllViews();
mContentLayout.addView(view);
onContentChanged();
}
@Override
public void setContentView(View view, LayoutParams params){
mContentLayout.removeAllViews();
mContentLayout.addView(view, params);
onContentChanged();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button_backward:
onLeftBackward(v);
break;
case R.id.button_forward:
onRightForward(v);
break;
default:
break;
}
}
}
主界面 继承标题基类 MainActivity
package com.example.basetitleactivity;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends AbstractTitleActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("主界面");
isShowLeftView(R.string.title_lefe_txt, true);
isShowRightView(R.string.title_right_txt, true);
}
}