android - Android 从 Activity 和 Fragment 隐藏或显示标题栏
问题描述
我有一个活动如下:
// My Activity Holding Fragment
public class MyActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_activity_main);
}
}
// My Fragment
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.my_fragment, container, false);
return view;
}
}
我想拥有Title Bar
我的活动。
我想在某些情况下隐藏或显示Activity 和 Fragment 的标题栏。
我尝试了以下解决方案,但由于我的活动不是从 ActionBarActivity 派生的,因此它不起作用。
// getSupportActionBar returns null
getSupportActionBar().hide();
getSupportActionBar().show();
// getActionBar returns null
getActionBar().hide();
getActionBar().show();
// findViewById returns null
findViewById(android.R.id.title).setVisibility(View.GONE);
findViewById(android.R.id.title).setVisibility(View.VISIBLE);
// Are deprecated
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
没有一个解决方案可以从 Activity 或 Fragment 中隐藏标题栏。
基本上我想隐藏 Activity 的 Activity 标题栏。
解决方案
首先将您的应用主题从 res/value/styles.xml 更改为此
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
//leave everything as it is
</style>
之后在 Activity 的 XML 布局中添加工具栏
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:background="@color/colorAccent"
app:titleTextColor="@android:color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content">
//add your toolbar design here
</toolbar>
现在终于在活动类中设置你的工具栏
public class MyActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_activity_main);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
//need to set toolbar before calling getSupportActionBar
setSupportActionBar(toolbar);
//Now show or hide according to your need
getSupportActionBar().hide();
getSupportActionBar().show();
}
}
同样适用于片段,但对于片段,您需要先调用视图
Toolbar toolbar = getView().findViewById(R.id.toolbar);
推荐阅读
- javascript - 如何在 apache cordova 中使用 sweetalert?
- python - 如何自动让 API 密钥过期?
- sql-server - text、ntext 和 image 数据类型对局部变量无效。铸造后
- node.js - 猫鼬查询带有特殊字符的正则表达式
- css - 我的 Wordpress CSS 版本缓存更新问题
- django - 创建一个接受变量的自定义导入语句,用于导入 django 模型
- python - Split() 未按预期工作 #SettingWithCopyWarning ,无法理解错误
- git - 如何在使用 gitversion 修复错误后自动增加补丁版本
- windows - 如何使用 nginx-fpm 在 Windows 10 上使用 DDEV 创建虚拟主机?
- sql - 查询以比较医院人口普查中缺少患者的日期