<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" >
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:srcCompat="@drawable/ic_home_black_24dp" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:layout_weight="3"
android:text="返回"
android:textColor="@color/black"
android:gravity="center"/>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:layout_weight="15"
android:text="个人信息"
android:textColor="@color/black"
android:gravity="center"
/>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:layout_weight="3"
android:text="帮助"
android:textColor="@color/black"
android:gravity="center"/>
</androidx.appcompat.widget.Toolbar>
结果如下图(文字都挤到一块了)
Toolbar是通过添加菜单的方式添加按钮的,你这样直接在上面堆组件,肯定不行
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:id="@+id/toolbar"
android:background="@color/colorPrimary"
app:title="hello"
android:layout_height="?attr/actionBarSize">
</android.support.v7.widget.Toolbar>
这里的高度设置成了actionBar的大小
可以使用自定义的Toolbar来实现这样的标题栏布局。具体步骤如下:
<com.example.app.TitleCenterToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
app:navigationIcon="@drawable/ic_arrow_back_white_24dp" />
这里的TitleCenterToolbar是自定义的Toolbar,app:navigationIcon属性用于设置左上角返回按钮的图标。
public class TitleCenterToolbar extends Toolbar {
private TextView mTitleTextView; // 标题文字View
// 构造方法
public TitleCenterToolbar(Context context) {
this(context, null);
}
public TitleCenterToolbar(Context context, AttributeSet attrs) {
this(context, attrs, R.attr.toolbarStyle);
}
public TitleCenterToolbar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}
// 初始化布局,找到标题文字View
private void initView() {
LayoutInflater.from(getContext()).inflate(R.layout.layout_title_center_toolbar, this);
mTitleTextView = (TextView) findViewById(R.id.tv_title);
}
// 重写setTitle方法,设置标题文字
@Override
public void setTitle(CharSequence title) {
mTitleTextView.setText(title);
}
}
这里的布局文件layout_title_center_toolbar.xml中只有一个TextView,用于显示标题文字。
TitleCenterToolbar toolbar = (TitleCenterToolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
setTitle("标题");
这里的setTitle方法是继承自Activity类的方法,会调用Toolbar的setTitle方法。
至此,就可以通过自定义Toolbar来实现这样的标题栏布局了。关于标题文字对齐方式,可以在TextView中添加android:gravity="center"属性来让文字居中显示。需要注意的是,在设置左上角返回按钮的图标时,应该使用app:navigationIcon属性来设置,而不是直接在布局文件中添加ImageView,因为这样可以保证返回按钮与系统默认的返回按钮一致,同时也会自动添加返回事件处理。