在android应用程序Toolbar.setTitle方法没有效果 – 应用程序名称显示为标题

我正在尝试使用android-support-v7:21库创build简单的应用程序。

代码片段:
MainActivity.java

public class MainActivity extends ActionBarActivity { Toolbar mActionBarToolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); mActionBarToolbar.setTitle("My title"); setSupportActionBar(mActionBarToolbar); } 

activity_main.xml中

 <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:fitsSystemWindows="true" android:orientation="vertical"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar_actionbar" android:background="@null" android:layout_width="match_parent" android:layout_height="?actionBarSize" android:fitsSystemWindows="true" /> </LinearLayout> 

但是不显示工具栏上的“我的标题”%应用程序名称%。
好像setTitle方法没有效果。
我想显示“我的标题”。

UPD:之前, styles.xml是:

 <style name="AppTheme" parent="Theme.AppCompat"> <item name="windowActionBar">false</item> </style> 

所以,我认为没有使用操作栏。 我添加NoActionBar风格的父母:

 <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> <item name="windowActionBar">false</item> </style> 

但问题没有解决。

任何帮助,非常感激。

find解决办法:
代替:

 mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); mActionBarToolbar.setTitle("My title"); setSupportActionBar(mActionBarToolbar); 

我用:

 mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); setSupportActionBar(mActionBarToolbar); getSupportActionBar().setTitle("My title"); 

它工作。

对于任何需要在设置SupportActionBar之后通过工具栏设置标题的人,请阅读。

支持库的内部实现只是在SupportActionBar设置时检查工具栏是否有标题(非空)。 如果有,那么将使用该标题而不是窗口标题。 然后,您可以设置一个虚拟标题,而您加载真正的标题。

 mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); mActionBarToolbar.setTitle(""); setSupportActionBar(mActionBarToolbar); 

后来…

 mActionBarToolbar.setTitle(title); 

上面的答案是完全正确的,但不适合我。

我用下面的东西解决了我的问题。

其实我的XML是这样的:

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/confirm_order_mail_layout" android:layout_width="match_parent" android:layout_height="fill_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/confirm_order_appbar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/confirm_order_list_collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|enterAlways"> <android.support.v7.widget.Toolbar android:id="@+id/confirm_order_toolbar_layout" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout> 

我已经尝试了所有的选项,毕竟我只是删除了CollapsingToolbarLayout因为我不需要在那个特定的XML所以我最终的XML是这样的:

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/confirm_order_mail_layout" android:layout_width="match_parent" android:layout_height="fill_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/confirm_order_appbar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/confirm_order_toolbar_layout" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout> 

现在你必须像上面那样使用setTitle()回答:

 mActionBarToolbar = (Toolbar) findViewById(R.id.confirm_order_toolbar_layout); setSupportActionBar(mActionBarToolbar); getSupportActionBar().setTitle("My Title"); 

现在如果你想一起使用CollapsingToolbarLayoutToolbar ,那么你必须使用CollapsingToolbarLayout setTitle()

 CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.confirm_order_mail_layout); collapsingToolbarLayout.setTitle("My Title"); 

愿它能帮助你。 谢谢。

试试这个..这个方法适用于我.. 希望它可以帮助别人..!

  <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:title="some title" app:popupTheme="@style/AppTheme.PopupOverlay"> 

只需使用即可更改任何活动名称

Acitivityname.this.setTitle(“标题NAme”);

为每个导航栏片段标题设置标题

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { myView = inflater.inflate(R.layout.second_layout, container, false); getActivity().setTitle("title"); return myView; } 

试试这个..这个方法适用于我.. 希望它可以帮助别人..!

 <android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" > <TextView android:id="@+id/toolbar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:singleLine="true" android:text="Toolbar Title" android:textColor="@android:color/white" android:textSize="18sp" android:textStyle="bold" /> </android.support.v7.widget.Toolbar> 

要在工具栏中显示徽标,请尝试下面的代码片段。 //设置drawable

 toolbar.setLogo(ContextCompat.getDrawable(context, R.drawable.logo)); 

让我知道结果。

请参阅https://code.google.com/p/android/issues/detail?id=77763 。 显然它应该是这样工作的。 一旦调用了setSupportActionBar()方法调用,ActionBar委托就负责将调用路由到正确的视图。

我通过使用 –

 toolbar.post(new Runnable() { @Override public void run() { toolbar.setTitle("My Title"); } }); 

我试图从片段重命名工具栏

它帮助了我,我希望能帮助别人

 Activity activity = this.getActivity(); Toolbar toolbar = (Toolbar) activity.findViewById(R.id.detail_toolbar); if (toolbar != null) { activity.setTitle("Title"); } //toolbar.setTitle("Title"); did not give the same results 

截图: 在这里输入图像说明

只需在您的适配器中使用它,其中MainActivity就是您的AppCompactActivity。 从任何地方调用它。

 ((MainActivity) context).getSupportActionBar().setTitle(titles.get(position)); 

尝试这个:

Xml代码

 <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="120dp" android:id="@+id/tool_bar" android:background="@color/tablayout" android:theme="@style/ToolBarStyle" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name" android:layout_gravity="center" android:id="@+id/toolbar_title" android:textSize="18sp" android:textColor="@color/white"/> </android.support.v7.widget.Toolbar> 

Java代码

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.tool_bar); toolbar_text = (TextView)findViewById(R.id.toolbar_title); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowTitleEnabled(false); toolbar.setLogo(R.drawable.ic_toolbar); } 

要更改每个不同活动的标题

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanc``eState); setContentView(R.layout.activity_pizza); setTitle(getResources().getText(R.string.title)); } 

确保你添加这个选项:

 getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE); 

如果您使用CollapsibleToolbarLayoutToolbar则需要在两个布局中设置标题

onCreate方法中将工具栏设置为操作栏

 protected void setUpToolBar() { if (mToolbar != null) { ((HomeActivity) getActivity()).setSupportActionBar(mToolbar); mToolbar.setTitleTextColor(Color.WHITE); mToolbar.setTitle("List Detail"); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getActivity() .getSupportFragmentManager().popBackStack(); } }); ((HomeActivity) getActivity()).getSupportActionBar() .setDisplayHomeAsUpEnabled(true); } } 

稍后使用setTitle方法简单地更新工具栏的标题

  mToolbar .setTitle(productFromShoppingList.getProductName()); mCollapsingToolbar.setTitle(productFromShoppingList.getProductName()); 

虽然没有立即与这个特定的设置相关,但是我发现从包含我的工具栏到AppBarLayout中的XML中删除“CollapsingToolbarLayout”使所有的工作都成为可能。

所以这:

  <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="?attr/actionBarSize" app:layout_scrollFlags="scroll|enterAlways" app:navigationIcon="@drawable/ic_arrow_back_white_24dp" /> </android.support.design.widget.AppBarLayout> 

而不是这个:

  <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.design.widget.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/collapsingToolbar" android:minHeight="?attr/actionBarSize" app:layout_scrollFlags="enterAlways|scroll|snap"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="?attr/actionBarSize" app:navigationIcon="@drawable/ic_arrow_back_white_24dp" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> 

然后,在调用setSupportActionBar()之前,在活动的onCreate中设置标题。

这是因为您正在使用工具栏和ActionBar。 现在,当您要使用工具栏作为操作栏时,您需要做的第一件事是禁用装饰提供的操作栏。

最简单的方法是从Theme.AppCompat.NoActionBar扩展主题。