当前位置: 首页 > 知识库问答 >
问题:

从片段设置自定义ActionBar标题

孙光临
2023-03-14
    LayoutInflater inflator = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflator.inflate(R.layout.custom_titlebar, null);

    TextView tv = (TextView) v.findViewById(R.id.title);
    Typeface tf = Typeface.createFromAsset(this.getAssets(),
            "fonts/capsuula.ttf");
    tv.setTypeface(tf);
    tv.setText(this.getTitle());

    actionBar.setCustomView(v);
((MainFragmentActivity) getActivity()).getSupportActionBar().setTitle(
            catTitle);
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="5dp"
        android:ellipsize="end"
        android:maxLines="1"
        android:text=""
        android:textColor="#fff"
        android:textSize="25sp" />

</RelativeLayout>

共有1个答案

洪浩
2023-03-14

你所做的是正确的。片段不能访问ActionBarAPI,因此必须调用GetActivity。除非您的片段是静态内部类,在这种情况下,您应该为父类创建WeakReference,并从那里调用activity.GetActionBar

要在使用自定义布局时为ActionBar设置标题,需要在片段中调用getactivity().settitle(YOUR_TITLE)

调用settitle的原因是调用gettitle作为actionbar的标题。gettitle返回该活动的标题。

在您的活动中:

public void setActionBarTitle(String title){
    YOUR_CUSTOM_ACTION_BAR_TITLE.setText(title);
}

在你的片段中:

((MainFragmentActivity) getActivity()).setActionBarTitle(YOUR_TITLE);

文档:

 类似资料:
  • 问题内容: 如何(如果可能)如何在Assets文件夹中的字体中设置ActionBar标题文本(仅-不是标签文本)中的自定义字体?我不想使用android:logo选项。 问题答案: 我同意不完全支持此操作,但这就是我所做的。您可以将自定义视图用于操作栏(它将显示在图标和操作项之间)。我正在使用自定义视图,并且已禁用本机标题。我所有的活动都继承自一个活动,该活动在onCreate中包含以下代码: 我

  • 问题内容: 如何从片段(android.support.v4.app.Fragment)中访问ActionBar。我正在使用Android支持库v4和v7。我没有使用Sherlock库。 承载片段的活动是ActionBarActivity。 我已经阅读了Android帮助片段Fragment,它也导致了我getActivity(),但是没有getSupportActionBar()方法。 问题答案

  • 如何从片段(android.support.v4.app.Fragment)中访问ActionBar。我正在使用Android支持库v4和V7。我不会用夏洛克图书馆的。 承载该片段的活动是ActionBarActivity。 我阅读了Android帮助部分的片段,它也引导了我getActivity(),但是没有getSupportActionBar()方法。

  • 问题内容: 我正在尝试在标签的标题上设置自定义字体。 我看到更多的开发要求一个适当的方式做到这一点的SO可能我设置选项卡上的文字动作条自定义字体,在我的资产字体文件夹?),但没有答案。 到目前为止,我已经采用了两种方法: 1)第一个是 受此 SO问题 _启发_的,包括为每个选项卡增加自定义布局: 这似乎不是一个很好的方法,因为如果选项卡+动作在横向模式下不适合ActionBar,则选项卡标题将显示

  • 我有一个有三个片段的活动。片段A在ActionBar中有1项。片段B在actionbar中有4项,片段C有1项。所以,当我换到片段B时,我想要拆分actionbar,但我不想在A-C片段中拆分action bar,因为没有理由只为一个项目填充屏幕底部的条。 当我在片段之间改变时,我可以改变actionbar模式吗?

  • 当我从片段B回到片段A时,actionbar标题应该是“fraga”,但它仍然是“fragb”。问题是add方法片段A没有重新创建,我没有找到事件来刷新它。 目前我找到的唯一简单的解决方案是: 1-fragb.onResume:保存上一个操作栏标题