工具栏标题在片段中显示为空

ToolBar Title showing empty in Fragment

我正在尝试在我的片段中添加 actionbar 工具栏。工具栏正在显示,但标题显示为空。



XML代码:

<android.support.v7.widget.Toolbar
                android:id="@+id/profile_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?android:attr/actionBarSize"
                android:minHeight="?android:attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:layout_scrollFlags="scroll|exitUntilCollapsed"
                app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

这是我的 FragmentActivity:

public class ProfileFragment extends android.support.v4.app.Fragment {
    Toolbar toolbar;

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_profile, container, false);
        toolbar = (Toolbar) getActivity().findViewById(R.id.profile_toolbar);
        ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
        ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Tamil");
        return view;
    }

}
toolbar.setTitle("My title");

试试这个

TypeCaste 到您的 ActivityName 而不是像这样的 AppCompatActivity

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_profile, container, false);
    toolbar = (Toolbar) getActivity().findViewById(R.id.profile_toolbar);
    ((YourFragmentActivity) getActivity()).setSupportActionBar(toolbar);
    ((YourFragmentActivity) getActivity()).getSupportActionBar().setTitle("Tamil");
    return view;
}

这听起来可能很愚蠢,请尝试更改工具栏标题的文本颜色。

toolbar.setTitleTextColor(Color.parseColor("#ffffff"));

最好在 activity 本身中设置工具栏。否则,每次更改片段时,您总是需要分配额外的内存。如果你在 parent activity 中设置工具栏你可以调用:

getActivity().setTitle("title");

在片段中。这样就不会分配额外的内存,也更容易维护。

所以:

Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.profile_toolbar);
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);

将前往 parent activity 并将成为:

Toolbar toolbar = (Toolbar) findViewById(R.id.profile_toolbar);
setSupportActionBar(toolbar);

如果您想在片段或 activity 本身中设置标题:

getActivity().setTitle("title");