使用PreferenceActivity实现设置界面,发现没有Toolbar,非常难看,与程序的界面不统一

如何在PreferenceActivity添加ToolBar?
在网络上搜索到以下方法
方法一:
新建Layout文件,包含Toolbar

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"android:orientation="vertical"><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="56dp"android:background="@color/colorPrimary"android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"app:popupTheme="@style/AppTheme.PopupOverlay"/><!--这里必须能添加一个id为@android:id/list的ListView否则会报错--><ListViewandroid:id="@android:id/list"android:layout_width="match_parent"android:layout_height="match_parent">az</ListView>
</LinearLayout>

一定要在布局文件中添加一个id为@android:id/list的ListView,否则有以下错误

java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

继承PreferenceActivity的类重写onCreate方法添加如下代码

        setContentView(R.layout.setting_toolbar);Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);toolbar.setTitle("设置");

亲测有效的办法
PreferenceActivity的ToolBar添加返回按钮
对于PreferenceActivity,不是继承AppCompatActivity,无法使用getSupportActionBar().setDisplayHomeAsUpEnabled(true)进行返回按钮的设置,但是可以将左侧导航图标设置成返回按钮并添加按键事件进行实现
首先在drawable文件夹添加一个返回图标ic_arrow_back_black_24dp
在代码中进行设置

        Drawable drawable=getResources().getDrawable(R.drawable.ic_arrow_back_black_24dp);toolbar.setNavigationIcon(drawable);toolbar.setNavigationOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {finish();}});

方法二:
继承PreferenceActivity重写onCreate方法添加如下代码:

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setStatusBar();//找到Activity根布局ViewGroup rootView = (ViewGroup) findViewById(android.R.id.content);//获取根布局子ViewView content = rootView.getChildAt(0);//加载自定义布局文件LinearLayout toolbarLayout = (LinearLayout)LayoutInflater.from(this).inflate(R.layout.activity_toolbar, null);//移除根布局所有子viewrootView.removeAllViews();//注意这里一要将前面移除的子View添加到我们自定义布局文件中,否则PreferenceActivity中的Header将不会显示toolbarLayout.addView(content);//将包含Toolbar的自定义布局添加到根布局中rootView.addView(toolbarLayout);//设置toolbarToolbar toolbar=(Toolbar)toolbarLayout.findViewById(R.id.toolbar);toolbar.setTitle("设置");toolbar.setTitleTextColor(Color.WHITE);Drawable d=getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha);toolbar.setNavigationIcon(d);
}

activity_toolbar.xml内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"android:orientation="vertical"><android.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="?attr/colorPrimary"android:minHeight="?attr/actionBarSize"></android.widget.Toolbar>
</LinearLayout>

参考:
在PreferenceActivity中使用ToolBar

Android PreferenceActivity添加ToolBar相关推荐

  1. 在Android studio的一个新建的Activity中添加Toolbar以及相应的功能添加

    Toobar一般用在实现一个APP的很多页面的标题的时候会用到,实现的方法也有很多种. 注意:Toolbar需要在工程中引入appcompat-v7的兼容包,需要使用android.support.v ...

  2. android 仿京东toolbar,仿京东商城系列2------自定义toolbar

    前言 这篇文章,我们来介绍一个自定义toolbar(建造自己的轮子,才能跑得更快),废话少说.上效果 toolbar 内容 1.建立自己的toolbar,首先你需要一个布局.老规矩先上代码! andr ...

  3. android actionbar分割线,Android ActionBar和ToolBar的使用

    前言自android5.0开始,AppCompatActivity代替ActionBarActivity,而且ToolBar也代替了ActionBar,下面就是ActionBar和ToolBar的使用 ...

  4. Android系统移植与调试之-------如何修改Android设备添加重启、飞行模式、静音模式等功能(一)...

    1.首先先来看一下修改前后的效果对比图 修改之后的图片 确认重启界面 具体的修改内容在下一篇中具体介绍. Android系统移植与调试之------->如何修改Android设备添加重启.飞行模 ...

  5. Android RecyclerView添加Header头部

     Android RecyclerView添加Header头部 Android RecyclerView不像以前的ListView那样直接添加头部,如果要给RecyclerView增加头部,则需要 ...

  6. Android Studio 添加Assets目录

    Android Studio 添加Assets目录: 法一: Since Android Studio uses the new Gradle-based build system, you shou ...

  7. android 切换 preferencefragment,Android PreferenceActivity与PreferenceFragment详解及简单实例_Android_脚本之家...

    Android  PreferenceActivity与PreferenceFragment 前言 转来转去又回到了Android,闲话少说,这里是参考Android原生的Settings应用来介绍一 ...

  8. XamarinSQLite教程Xamarin.Android项目添加引用

    XamarinSQLite教程Xamarin.Android项目添加引用 在Xamarin.Android项目中,导入System.Data和Mono.Data.SQLite库的操作步骤如下: (1) ...

  9. android谷歌补丁日期,在谷歌日历Android中添加开始日期和结束日期之间所有日期的事件...

    在谷歌日历 Android中添加开始日期和结束日期之间所有日期的事件.我希望每3个月剩余一次,直到结束日期. 这是我的功能 public void addEvent1(Context ctx, Str ...

  10. android 怎么加链接地址,Android TextView添加超链接的方法示例

    本文实例讲述了Android TextView添加超链接的方法.分享给大家供大家参考,具体如下: public class Link extends Activity { @Override prot ...

最新文章

  1. MSN Cartoon 试用
  2. ubuntu16.04安装新版本golang
  3. 程序的内存分配模式(堆栈以及静态存储区,文字常量区,代码区)
  4. Shell 的基础知识
  5. Ubuntu下很给力的下载工具
  6. torch --用法
  7. Security+ 学习笔记8 渗透测试和安全练习
  8. C# Sqlite For WP7
  9. Bzoj2882 工艺
  10. STM32 跑马灯程序设计
  11. android封装全局调用的toast_安卓全局toast
  12. Aspnet Mvc 前后端分离项目手记(一) 关于跨域问题(还有前言)
  13. mysql内嵌插入语句_MySQL中添加或插入语句(Insert)的几种使用方式
  14. 高斯-约当(Gauss-Jordan)消元法
  15. Java哪些是线程安全的_Java集合中那些类是线程安全的
  16. copy con 的详细解释
  17. 好一座假山!———初谈岳不群
  18. Microsoft Edge浏览器打不开
  19. 用python cv2将三维RGB图像转为二维灰度图像的小demo
  20. java计算机毕业设计红河旅游信息服务系统源程序+mysql+系统+lw文档+远程调试

热门文章

  1. 存储大师新作,三星存储四大新品面世!
  2. 浅谈MES系统质量管理功能模块
  3. gx works2 版本号_GX Works2 64位
  4. 大厂首发:springcloud菜鸟教程
  5. mysql关联查询语句
  6. 界面开发用qt还是java,做windows界面,用QT还是MFC?
  7. javascript/js计算器的基础制作
  8. MVPArms官方快速组件化方案开源,来自5K star的信赖
  9. mysql架设手游_魔天屠龙传手游私服架设源码+大中控后台+搭建教程
  10. VB2010实例(2) _滚动字幕