话不多说,先上效果图

本文参考简书博客:《这才是Android设置界面的正确做法》一文写成,在其基础上删改并增加了一些内容。建议新窗口打开原文,在本文讲述不清楚的地方参考原文去寻找答案。

其实设置界面,不需要自己去一个一个选项地去做。Android为我们提供了一些封装好的东西,那就是基于SharedPreferencesPreferenceActivity

首先在res目录下新建一个名为“xml”的文件夹,新建preference.xml,名字可以修改(这里的代码可以参考原文,此处作了精简)

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="设置1">
<EditTextPreference
android:key="Setting1"
android:title="我是标题"
android:summary="我是简介" />
</PreferenceCategory>
<PreferenceCategory android:title="设置2">
<SwitchPreference
android:key="Setting2"
android:checked="true"
android:title="我是标题"
android:summary="我是简介"
android:summaryOff="我是关闭选项时的summary"
android:summaryOn="我是开启选项时的summary" />
</PreferenceCategory>
</PreferenceScreen>

PreferenceScree表明这是一个设置页面。

PreferenceCategory可以用来区分不同类型的选项,可以设置一个title属性作为小标题。

这里转载原文的解释

支持类型

Preference : 普通选项

EditTextPreference : 点击后弹出编辑框窗口的选项

SwitchPreference : 开关选项

RingtonePreference : 打开内容提供

CheckBoxPreference : 带复选按钮

ListPreference : 复合的单选按钮

MultiSelectListPreference : 复合的复选按钮

支持属性

key :最多的属性,因为Preference这个数据的存取就是使用SharedPreferences来实现的。所以保存时需要一个key的。

summary :小标题或者叫做简述,一般是用于对选项的简要说明。

summaryOff :具有开关属性的选项关闭时的summary

summaryOn :具有开关属性的选项打开时的summary

title :选项的标题

dialogTitle :弹出消息框的标题

dialogMessage :弹出的消息框的内容,会把MultiSelectListPreference和ListPreference的选项覆盖

layout :选项的布局(支持自定义)

然后在放置Java的目录新建一个PreferenceSettings.java,名字可以修改

package 你自己的包名;

import android.os.Bundle;
import android.preference.PreferenceActivity; public class PreferenceSettings extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.addPreferencesFromResource(R.xml.preference); // 如果刚刚的xml用了自己的文件名,此处记得修改
}
}
获取设置内容
// 由于PreferenceScreen基于SharedPreferences,所以他的调用方法与是相似的
String DefaultUrl = PreferenceManager.getDefaultSharedPreferences(this)
.getString("DefaultUrl", ""); // 此处的getString可视需要改变为getAll, getBoolean等(具体请查找SharedPreferences相关资料)

最后记得在manifest中注册这个Activity

<activity android:name=".你的Java文件的文件名"/>

这才是Android设置界面的正确做法👌👌👌的更多相关文章

  1. Xamarin Android设置界面提示类型错误

    Xamarin Android设置界面提示类型错误 错误信息:Integer types not allow (at ‘padding’ with value ’10’)Android界面属性的长度和 ...

  2. Android 设置界面的圆角选项

    请先看一个图: 像这种界面的设计,其实是这样的:整体为一个LinearLayout,一个一个排下去,每一个点击项都是一个RelativeLayout(要为其设置clickable为true),分为左右 ...

  3. Android调用系统自带的设置界面

    Android有很多系统自带的设置界面,如设置声音,设置网络等. 在开发中可以调用这些系统自带的设置界面. 点击以下列表中的选项,就可以调出相应的系统自带的设置界面. 如点击“无线和网络设置”,可以调 ...

  4. android判断当前网络状态及跳转到设置界面

    今天,想做这个跳转到网络设置界面, 刚开始用 intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS); 不料老是出现settings.Wirele ...

  5. Android常用控件之Fragment仿Android4.0设置界面

    Fragment是Android3.0新增的概念,是碎片的意思,它和Activity很相像,用来在一个Activity中描述一些行为或部分用户界面:使用多个Fragment可以在一个单独的Activi ...

  6. Android开发——设置界面的创建

    前言: 最近忙着搞项目,难得有时间,便来整理搞项目中学习到的知识 使用之前,先介绍一下android这种的五种数据储存方式,分别为文件储存,SharePrefence,SQL,使用ContentPro ...

  7. 安卓工作室 android studio 汉化后,报错。 设置界面打不开。Can't find resource for bundle java.util.PropertyResourceBundle, key emmet.bem.class.name.element.separator.label

    安卓工作室 android studio 汉化后,报错. 设置界面打不开. Android studio has been sinified and reported wrong.The setup ...

  8. Android物联网应用程序开发(智慧城市)—— 环境状态值范围设置界面开发

    效果图: 代码: 布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...

  9. Android 打开设置界面或者WiFi连接界面

    1.使用APP打开系统的设置界面或者WiFi连接界面 startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接进入手机中的wifi网 ...

随机推荐

  1. webpack+vue img的src问题

    在vue中给图片添加路径试过三种方式: 1.在css的background中添加路径: 2.将路径写在data属性中,然后动态注入img标签的src属性: 3.在img标签中奖src属性写死 第三种方 ...

  2. JavaScript基础技术总结

    javascript的作用 HTML网页运行在浏览器端,与用户没有交互功能,用户访问网页的时候只能看,如果网页没有程序员去更新,永远是一成不变的.JavaScript就是可以让程序运行在网页上,提高客 ...

  3. SecureCRT VBscript连接指定端口和波特率

    crt.Session.Connect "/Serial COM2 /BAUD 38400" 其它可用选项参考: crt.session.connect options https ...

  4. SpringBoot_自动装配

    SpringBoot SrpingBoot 给人的第一印象就是 简洁,易上手.它是自 Spring 而来为了简化我们开发的,而经历过了 Spring 中繁琐的配置文件,我确实很好奇它到底是怎么帮我们把 ...

  5. JAVA局部变量和成员变量的区别

    成员变量与局部变量的区别 1.在类中的位置不同 成员变量:在类中方法外面 局部变量:在方法或者代码块中,或者方法的声明上(即在参数列表中) 2.在内存中的位置不同 成员变量:在堆中(方法区中的静态区) ...

  6. 如何理解Java中的自动拆箱和自动装箱?

    小伟刚毕业时面的第一家公司就被面试官给问住了... 如何理解Java中的自动拆箱和自动装箱? 自动拆箱?自动装箱?什么鬼,听都没听过啊,这...这..知识盲区... 回到家后小伟赶紧查资料,我透,这不 ...

  7. Sping源码+Redis+Nginx+MySQL等七篇实战技术文档,阿里大佬推荐

    JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. 引入 ...

  8. [PHP学习教程 - 日期/时间]001.月份第一天&最后一天(Month First Day & Last Day)

    引言:在时间处理上,对于前/后台人性化的展示当前月份最大天数,这个是网站必须要处理的一个方面.但通常这一块会由第三方类库直接包装,这里我们做一个简单的Mark. 今天,我们就为大家提供一个函数,获得指 ...

  9. php动态安装扩展

    下面以安装phpredis扩展为例 下载扩展源码,解压 [root@localhost ~]# wget phpredis-5.1.1.tar.gz [root@localhost ~]# tar - ...

  10. prometheus配置pushgateway功能测试

    一.环境: 1.prometheus服务器ip:192.168.0.208 2.node-exporter客户机ip:192.168.0.202 二.测试设计考虑: pushgateway类似一台信息 ...