ani*_*art 102 android android-fragments android-actionbar android-support-library android-toolbar
我ActionBarActivity
有NavigationDrawer
和使用support_v7 Toolbar
的动作条.在我的一个片段工具栏中有自定义视图.在其他片段中Toolbar
应显示标题.
如何Toolbar
从片段中获取自定义实例?我可以使用ActionBar getActivity().getActionBar()
,但是如果我调用setTitle()
这个实例ActionBar它什么都不做.
UPD:
就我而言
((ActionBarActivity) getActivity()).getSupportActionBar().setTitle();
(正如MrEngineer13所说)在第一次片段创建时不起作用,因为我从onHiddenChanged()调用它.现在我向onCreateView()添加更多一个,它工作正常.
MrE*_*r13 190
您需要将您的活动从第一个投射getActivity()
到AppCompatActivity
第一个.这是一个例子:
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle();
Run Code Online (Sandbox Code Playgroud)
你必须抛出它的原因是因为getActivity()
返回a FragmentActivity
而你需要一个AppCompatActivity
Fli*_*bor 76
如果片段应具有ToolBar的自定义视图,则可以分别为每个片段实现ToolBar.
将ToolBar添加到fragment_layout:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimaryDark"/>
Run Code Online (Sandbox Code Playgroud)
在片段中找到它:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
//set toolbar appearance
toolbar.setBackground(R.color.material_blue_grey_800);
//for crate home button
AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.setSupportActionBar(toolbar);
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
菜单监听器可以通过两种方式创建:覆盖片段中的onOptionsItemSelected:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case android.R.id.home:
getActivity().onBackPressed();
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)
或者在onCreateView()中创建工具栏时设置监听器:
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
Bha*_*nki 40
您可以通过两种方式获取片段中的工具栏
第一
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
Run Code Online (Sandbox Code Playgroud)
第二个
Toolbar toolbar = ((MainActivity) getActivity()).mToolbar;
Run Code Online (Sandbox Code Playgroud)
toolbar = (Toolbar) getView().findViewById(R.id.toolbar);
AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
140331 次 |
最近记录: |