在很多软件中都可以看到风格统一的标题栏,上面包括返回键,当前页的名称等,下面详细分析
这里我们在布局文件中引用了一个toolbar,下面是toolbar的布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@color/colorToolBar"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<ImageView
android:id="@+id/toolbar_left_im"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:background="@drawable/selector_back_press"
android:gravity="center"
android:padding="8dp"
android:visibility="gone" />
<TextView
android:id="@+id/toolbar_left_tv"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:background="@drawable/selector_back_press"
android:drawableLeft="@mipmap/navi_back"
android:drawablePadding="4dp"
android:gravity="center"
android:padding="8dp"
android:textColor="@android:color/white"
android:textSize="18dp"
android:visibility="gone" />
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:singleLine="true"
android:textColor="@android:color/white"
android:textSize="20dp" />
<TextView
android:id="@+id/toolbar_right_tv"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@drawable/selector_back_press"
android:gravity="center"
android:padding="8dp"
android:textColor="@android:color/white"
android:textSize="18dp"
android:visibility="gone" />
<ImageView
android:id="@+id/toolbar_right_im"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@drawable/selector_back_press"
android:gravity="center"
android:padding="8dp"
android:visibility="gone" />
</RelativeLayout>
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.ifreshwing.speedshooting.common.NoDoubleClickListener;
public class BaseActivity extends AppCompatActivity {
private TextView toolbar_string, toolbar_left_tv, toolbar_right_tv;
private ImageView toolbar_left_im, toolbar_right_im;
private RelativeLayout toolbar;
public TextView getToolbar_string() {
return toolbar_string;
}
public int getToolbarHeight() {
toolbar = (RelativeLayout) findViewById(R.id.toolbar);
return toolbar.getHeight();
}
public void setToolbar_string(String str) {
toolbar_string = (TextView) findViewById(R.id.toolbar_title);
toolbar_string.setText(str);
}
public TextView getToolbar_left_tv() {
return toolbar_left_tv;
}
public void setToolbar_left_tv(String str) {
toolbar_left_tv = (TextView) findViewById(R.id.toolbar_left_tv);
if (!str.equals("")) {
toolbar_left_tv.setText(str);
}
toolbar_left_tv.setVisibility(View.VISIBLE);
toolbar_left_tv.setOnClickListener(new NoDoubleClickListener() {
@Override
public void onNoDoubleClick(View v) {
finish();
}
});
}
public TextView getToolbar_right_tv() {
return toolbar_right_tv;
}
public void setToolbar_right_tv(String str) {
toolbar_right_tv = (TextView) findViewById(R.id.toolbar_right_tv);
toolbar_right_tv.setText(str);
toolbar_right_tv.setVisibility(View.VISIBLE);
}
public ImageView getToolbar_left_im() {
return toolbar_left_im;
}
public void setToolbar_left_im(int id) {
toolbar_left_im = (ImageView) findViewById(R.id.toolbar_left_im);
toolbar_left_im.setImageResource(id);
toolbar_left_im.setVisibility(View.VISIBLE);
toolbar_left_im.setOnClickListener(new NoDoubleClickListener() {
@Override
public void onNoDoubleClick(View v) {
finish();
}
});
}
public ImageView getToolbar_right_im() {
return toolbar_right_im;
}
public void setToolbar_right_im(int id) {
toolbar_right_im = (ImageView) findViewById(R.id.toolbar_right_im);
toolbar_right_im.setImageResource(id);
toolbar_right_im.setVisibility(View.VISIBLE);
}
public void hindAll() {
if (toolbar_left_im != null) {
toolbar_left_im.setVisibility(View.GONE);
}
if (toolbar_left_tv != null) {
toolbar_left_tv.setVisibility(View.GONE);
}
if (toolbar_right_im != null) {
toolbar_right_im.setVisibility(View.GONE);
}
if (toolbar_right_im != null) {
toolbar_right_im.setVisibility(View.GONE);
}
}
}
然后在需要的Activity的布局文件加入
<include android:id="@+id/toolbar" layout="@layout/toolbar" />
在Activity的onCreate()方法写这两行代码就可以了
setToolbar_string("设置"); setToolbar_left_tv("返回");
这样我们app风格不仅统一了,而且返回都可以不用点返回键了,是不是很简单呢?