如何更改appcompat v7库上的操作栏标题

时间:2016-09-08 15:57:12

标签: android-actionbar android-appcompat

我想以编程方式将Actionbar标题更改为任何文本。 我使用appcompat v7 这是我的代码:

  LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View actionBarview = inflater.inflate(R.layout.action_bar, null);

    ActionBar actioBar = getSupportActionBar();
    actioBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    actioBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    actioBar.setCustomView(actionBarview, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    final DrawerLayout drowerlayout = (DrawerLayout) findViewById(R.id.drawerlayout);

我试过:actioBar.setTitle(" MyText");

但什么都没发生。

这是我的自定义操作栏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="48dp"
    android:layout_gravity="right"
    android:background="#bfbfbf"
    android:gravity="right"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/TextView01"
        android:layout_width="0dp"
        android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="0.1"/>

    <TextView
        android:id="@+id/txtBName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:gravity="center"
        android:text="......"
        android:textColor="#000" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="0.1"/>

    <Button
        android:id="@+id/btnMenu"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="menu" />

1 个答案:

答案 0 :(得分:1)

由于您在操作栏上设置自定义视图设置标题setTitle()无法正常工作,您将需要删除自定义并坚持使用默认操作栏视图,或者您的自定义中必须有一个TextView获取引用并将其文本设置为您的标题。

如果您的案例需要设置customView,那么您将不得不去做...

View actionBarview = inflater.inflate(R.layout.action_bar, null);
TextView tvTitle = (TextView) actionBarview.findViewById(R.id.tv_title)
tvTitle.setText(<your title here>)

请记住tv_title应该在您的自定义视图xml中作为TextView小部件。稍后在代码中,您可以引用tvTitle来更改操作栏标题