Android自定义PreferenceScreen的Layout布局,并获取控件

article/2025/11/6 4:15:58

先说一下需求,要在<PreferenceScreen>里添加一个自定义的Layout,实现如下效果:

操作步骤:

1、在res/layout目录创建一个xml文件,名为my_preference_layout.xml,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="15dp"android:textColor="#000000"android:text="手机编号:" /><TextViewandroid:id="@+id/mobileid"android:layout_width="0dp"android:layout_height="wrap_content"android:inputType="textPersonName"android:cursorVisible="false"android:text=""android:layout_weight="1"/><Buttonandroid:id="@+id/btnCopyMobileid"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="0dp"android:layout_marginRight="0dp"android:layout_centerHorizontal="true"android:layout_marginTop="0dp"android:minHeight="28dp"android:text="点击复制"android:textColor="#fff"android:background="#D41A5E"android:textSize="16sp" /></LinearLayout>
</LinearLayout>

2、创建一个自定义控件myPreference.java,继承自android.preference.Preference,代码如下:

package net.zy13.skhelper.view;import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.preference.Preference;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;import net.zy13.skhelper.MainApplication;
import net.zy13.skhelper.R;
import net.zy13.skhelper.utils.PreferenceUtil;public class MyPreference extends Preference {private Context mContext;private TextView mTextViewMobileid;private Button mButtonCopyMobileid;public MyPreference(Context context) {this(context, null);}public MyPreference(Context context, AttributeSet attrs) {//这里构造方法也很重要,不加这个很多属性不能再XML里面定义this(context, attrs, android.R.attr.editTextStyle);}public MyPreference(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);//获取上下文mContext=context;}protected View onCreateView(ViewGroup parent) {// TODO Auto-generated method stubsuper.onCreateView(parent);LayoutInflater inflater=(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View view = inflater.inflate(R.layout.preference_mobileid_layout, null);//获取控件mButtonCopyMobileid=view.findViewById(R.id.btnCopyMobileid);mTextViewMobileid = (TextView)view.findViewById(R.id.mobileid);//监听点击事件(匿名类方式,或叫内部类方式)mButtonCopyMobileid.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub}});return view;}
}

我们创建这个myPreference.java自定义控件的作用:

  • 用来读取我们添加layout布局文件my_preference_layout.xml,同时操作布局里的控件;
  • 这个myPreference.java类最重要的就是重写父类的onCreateView方法;

3、在PreferenceScreen的xml里使用我们自定义的控件,如下图:

 具体代码:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><PreferenceCategoryandroid:key="settings"android:title="设置"><net.zy13.skhelper.view.MyPreferenceandroid:layout="@layout/my_preference_layout"/><SwitchPreferenceandroid:title="跳过手机编号(mobileid)的加密"android:defaultValue="true"android:summary="开启后,选择加密也不会加密mobileid参数"android:key="isnotencryptmobileid" /><SwitchPreferenceandroid:title="是否加密数据"android:key="isencrypt"android:defaultValue="true" /><ListPreferenceandroid:title="数据加密方式"android:key="encryptmethod"android:summary="接口数据加密方式,md5为sign签名验证,des为端对端对称加密"android:defaultValue="md5"android:entries="@array/api_encrypt_method"android:entryValues="@array/api_encrypt_method_value" /></PreferenceCategory>
</PreferenceScreen>

 这样就ok了,网上有很多类似的教程,但是都不详细,所以我写了一个完整的分享给大家。


http://chatgpt.dhexx.cn/article/vflv1y61.shtml

相关文章

PreferenceScreen的使用(非常有用)

在res下建个xml文件夹,建立2个xml文件: preferencescreentest_one.xml <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"android:key="using_categor…

使用PreferenceActivity和PreferenceScreen构建应用的设置

对于每个应用程序来说&#xff0c;都要有一些属于用户自己的设置&#xff0c;满足不同需求。当我们点击menu时&#xff0c;如下&#xff1a; 点击settings时&#xff0c;出现&#xff1a; 那么这样的效果是怎么实现的呢&#xff1f;我只是来个简单介绍&#xff0c;给自己做备忘…

PreferenceScreen

对于每个应用程序来说&#xff0c;都要有一些属于用户自己的设置&#xff0c;满足不同需求。当我们点击menu时&#xff0c;如下&#xff1a; 点击settings时&#xff0c;出现&#xff1a; 那么这样的效果是怎么实现的呢&#xff1f;我只是来个简单介绍&#xff0c;给自己做备忘…

PreferenceFragment的使用

文章目录 PreferenceFragment简介PreferenceFragment使用PreferenceFragment 扩展 PreferenceFragment简介 在我们写一个项目的时候&#xff0c;基本都有选项设置界面&#xff0c;这类设置界面的原理基本都是本地的一些个性化设置&#xff0c;通过读取本地设置来改变某些差异显…

Android中Preference的使用以及监听事件分析

转载请注明出处: http://blog.csdn.net/qinjuning 在Android系统源码中&#xff0c;绝大多数应用程序的UI布局采用了Preference的布局结构&#xff0c;而不是我们平时在模拟器中构建应用程序时使用的View布局结构&#xff0c;例如&#xff0c;Setting模块中布局。当然&#xf…

screentogif 录屏

screentogif的由来 screentogif于2013年诞生&#xff0c;主要的开发者是巴西帅哥Nicke Manarin。 最初的目的只是为了学习和提供一款软件供开发者个人使用。 在2016重新启动项目&#xff0c;使得screentogif变得更加实用。 screentogif的安装 进入官网下载软件安装包。 s…

android PreferenceScreen使用笔记

preference.xml <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><Preference android:title="基本信息"android:layout="@layout/tex…

PreferenceScreen 的使用

java代码&#xff1a; public class Main3Activity extends PreferenceActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main3); //加载布局文件&#xff0c;相当于…

PreferenceScreen的应用

PreferenceScreen preference是偏好&#xff0c;首选的意思&#xff0c;PreferenceScreen个人翻译成 “偏好显示”&#xff0c;明白这个意思就好&#xff0c;就是说根据特点灵活的定义显示内容风格&#xff0c;一个屏幕可以包含多个风格&#xff0c;像系统自带的声音设置界面。…

PreferenceScreen 中如何自定义SwitchPreferenceCompat的布局

PreferenceScreen 中如何自定义SwitchPreferenceCompat的布局 Android Preference 使用请看这篇 Android Preference使用 系统设置的代码&#xff1a; public class SetActivity extends AppCompatActivity { Override protected void onCreate(Bundle savedInstanceSta…

Preference的使用(2) --- PreferenceCategory PreferenceScreen

上一节有讲到Preference的基本使用跟API的介绍 &#xff0c;没有看的话请先阅读 Preference的使用&#xff08;1&#xff09; 现在介绍其子类PreferenceCategory 跟 PreferenceScreen&#xff0c;现在看下继承关系 如上图&#xff0c;他们都是继承自PreferenceGroup的先看一…

preferenceActivity和preferencescreen用法

1. 首先生成一个preferencescreen的xml文件..看代码: <?xml version"1.0" encoding"utf-8"?><PreferenceScreen xmlns:android"http://schemas.android.com/apk/res/android"> <CheckBoxPreference android:key"chec…

Android Settings中Preference的理解以及使用

Preference 是Android App 中重要的控件之一&#xff0c;Settings 模块大部分都是通过 Preference 实现 优点&#xff1a; Preference 可以自动显示我们上次设置的数据&#xff0c;Android提供preference这个键值对的方式来处理这种情况&#xff0c;自动保存这些数据&#xff…

使用 Android PreferenceScreen 偏好显示类(android.preference.PreferenceScreen)

http://edu.gamfe.com/tutor/d/36925.html PreferenceScreen preference是偏好&#xff0c;首选的意思&#xff0c;PreferenceScreen个人翻译成 “偏好显示”&#xff0c;明白这个意思就好&#xff0c;就是说根据特点灵活的定义显示内容风格&#xff0c;一个屏幕可以包含多个风…

android开发之PreferenceScreen使用详解

一 PreferenceActivity 1、PreferenceActivity概述 PreferenceActivity是一个抽象类&#xff0c;继承于ListActivity&#xff0c;以列表形式视图来展现界面,加载的整个View也是基于ListActivity中那个ListView的&#xff0c;其最主要的优势在于添加Preference后可让其状态持久化…

Android PreferenceScreen的使用和详解(设置页面)

PreferenceScreen是设置选项的配置文件&#xff0c;一般用在设置页面&#xff0c;用来当前的状态是保存在。该状态无须用户处理&#xff0c;存在SharedPreferences中。 1.如何使用 1.1布局文件的创建 PreferenceScreen的用法和layout的类似&#xff0c;都是通过xml文件来管理…

Semaphore - 信号量的简单介绍与使用

一、Semaphore使用 // Test_Semaphore.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <windows.h> #include <iostream> #include <time.h>using namespace std;const int g_num 3; HANDLE g_semp[g_num] { NULL }; HAND…

C++中多线程管理

1&#xff0c;函数1 CreateSemaphore 创建或打开一个信号量&#xff0c;信号可以理解为停车场&#xff0c;创建和增加信号&#xff0c;可以理解为创建一个停车场&#xff0c;和可以停放的汽车&#xff0c; 如下&#xff1a; CreateSemaphore(NULL, 2, 3, szSemaphoreA);//开…

lspci是如何工作的

目录 前言lspci那么系统是怎么知道每个PCIe设备具体是哪个厂商的哪种设备的&#xff1f; 前言 出于好奇&#xff0c;看了看lspci的工作原理&#xff0c;操作系统是怎么认识这么多PCIe设备的&#xff1b; lspci lspci用于查看当前系统所连接的所有PCI/PCIe设备&#xff1b; …

linux系统下怎么使用lspci,Linux系统之lspci命令介绍

lspci 顾名思义 就是显示所有的pci设备信息。pci是一种总线 而通过pci总线连接的设备就是pci设备了。如今 我们常用的设备很多都是采用pci总线了 如 网卡、存储等。下面就简单介绍下该命令。 lspci 显示所有的pci设备信息。包括设备的BDF 设备类型 厂商信息等。 lspci -t [BDF]…