如何将Actionbar中心的Title与片段中的后退按钮对齐

时间:2016-11-05 11:45:32

标签: android android-layout android-studio android-fragments

我想在中心制作一个动作栏的标题栏, 我尝试了代码使其成为中心但没有成功 我的代码在片段((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); ((AppCompatActivity)getActivity()).getSupportActionBar().setCustomView(R.layout.toobar_center_withback); ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);

我的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="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:gravity="center"
        android:text="SIGN IN"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
        android:textStyle="bold" />

</LinearLayout>

它提供输出enter image description here 我也尝试了一些文本视图边距,但我怎么知道不同屏幕的实际边距测量

我遵循了这些解决方案但没有成功

How to align title at center of ActionBar in default theme(Theme.Holo.Light)

另一件事是我不想使用任何工具栏或其他东西,我想要一个简单的解决所有片段的方法

我也编写了代码但没有成功

 public void setTitle(String title) {
    ((AppCompatActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    TextView textView = new TextView(getActivity());
    textView.setText(title);
    textView.setTextSize(20);
    textView.setTypeface(null, Typeface.BOLD);
    textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    textView.setGravity(Gravity.CENTER);
    textView.setTextColor(getResources().getColor(R.color.black));
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setCustomView(textView);
}

当我没有按钮或有后退按钮时,它工作正常,并且菜单中有一个按钮,showaction总是像这样

enter image description here

2 个答案:

答案 0 :(得分:2)

我也遇到了这个问题,然后我找到了解决方案:

1.创建自定义工具栏.cs

custom_actionbar.xml

2.使用

禁用默认操作栏
<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorWhite"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    app:popupTheme="@style/AppTheme.PopupOverlay"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="?attr/actionBarSize"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:src="@drawable/logo_action_bar" />
</RelativeLayout>

3.然后在每个布局中包含此<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

custom_actionbar

答案 1 :(得分:1)

所以最后我找到了一个解决这个问题的技巧,它起作用了

setTitle("Sign In");
 ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        setHasOptionsMenu(true);

这是我的setTitle方法

 public void setTitle(String title) {
    ((AppCompatActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    TextView textView = new TextView(getActivity());
    textView.setText(title);
    textView.setTextSize(20);
    textView.setTypeface(null, Typeface.BOLD);
    textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    textView.setGravity(Gravity.CENTER);


    textView.setTextColor(getResources().getColor(R.color.black));
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setCustomView(textView);
}

在这里我创建了一个带有透明图像的菜单项

 @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.blank_menu,menu);
        super.onCreateOptionsMenu(menu, inflater);
    }

这是我的blank_menu.xml

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    >
<item
    android:title="   "
    app:showAsAction="always|withText"
    android:icon="@drawable/transparent"
    >
</item>
</menu>

现在它的输出就像这样 enter image description here