在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");
现在如果你想一起使用CollapsingToolbarLayout
和Toolbar
,那么你必须使用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);
如果您使用CollapsibleToolbarLayout
和Toolbar
则需要在两个布局中设置标题
在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
扩展主题。