自定义PreferenceActivity和PreferenceFragment的样式

感谢:http://blog.youkuaiyun.com/luck_apple/article/details/7064004

这篇文章讲的是如何定义fragment的样式,基本布局都是从源码中弄过来的。通过设置布局文件的属性,让我们可以自定义preference的界面。

先来看看xml文件中的内容

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <PreferenceCategory
        android:layout="@layout/prefs_category_widget"
        android:title="第一个模块的标题" >

        <!-- 设置单选模块 -->
        <CheckBoxPreference
            android:icon="@drawable/appstore"
            android:key="checkbox_preference"
            android:layout="@layout/preference_item"
            android:summary="整个布局都是自定义的,包括图标、文字、点击效果和单选按钮"
            android:title="标题"
            android:widgetLayout="@layout/checkbox_preference_widget" />

        <MultiSelectListPreference
            android:layout="@layout/preference_item"
            android:entries="@array/floatColor"
            android:entryValues="@array/floatColor_value"
            android:key="multSelect_preference"
            android:summary="点击可以选择多个选项"
            android:title="多选列表" />

        <RingtonePreference
            android:layout="@layout/preference_item"
            android:key="ringtone_preference"
            android:summary="点击选择铃声"
            android:title="铃声选择列表" />

        <SwitchPreference
            android:layout="@layout/preference_item"
            android:key="switch_preference"
            android:summaryOff="已关闭"
            android:summaryOn="已开启"
            android:switchTextOff="close"
            android:switchTextOn="open"
            android:title="开关" />
    </PreferenceCategory>
    <PreferenceCategory
        android:layout="@layout/prefs_category_widget"
        android:title="第二个模块的标题" >

        <!-- 设置输入框模块 -->
        <EditTextPreference
            android:layout="@layout/preference_item"
            android:dialogIcon="@drawable/itunes"
            android:dialogTitle="dialog_title_edittext_preference"
            android:key="edittext_preference"
            android:negativeButtonText="cancel"
            android:positiveButtonText="ok"
            android:title="文本输入" />

        <!-- 选择列表模块 -->
        <ListPreference
            android:layout="@layout/preference_item"
            android:dialogTitle="dialog_title_list_preference"
            android:entries="@array/floatColor"
            android:entryValues="@array/floatColor_value"
            android:key="list_preference"
            android:summary="点击后会弹出一个单选列表来选择数据"
            android:title="列表选择框" />
    </PreferenceCategory>

    <!-- 点击后又启动一个fragment -->
    <PreferenceCategory
        android:layout="@layout/prefs_category_widget">

        <!--
             This PreferenceScreen tag sends the user to a new fragment of
             preferences.  If running in a large screen, they can be embedded
             inside of the overall preferences UI.

        -->
        <PreferenceScreen
            android:layout="@layout/preference_item"
            android:fragment="com.kale.shared.MainActivity$Prefs1FragmentInner"
            android:summary="点击后跳到另一个fragment_preference"
            android:title="另一个fragment_preference" >

            <!-- Arbitrary key/value pairs can be included for fragment arguments -->
            <extra
                android:name="someKey"
                android:value="somePrefValue" />
        </PreferenceScreen>

        <!--
             This PreferenceScreen tag sends the user to a completely different
             activity, switching out of the current preferences UI.

        -->
        <PreferenceScreen
            android:layout="@layout/preference_item"
            android:icon="@drawable/ic_launcher"
            android:summary="点击后跳转到 http://www.android.com"
            android:title="点击触发intent动作" >
            <intent
                android:action="android.intent.action.VIEW"
                android:data="http://www.android.com" />
        </PreferenceScreen>
    </PreferenceCategory>
    <PreferenceCategory
        android:layout="@layout/prefs_category_widget"
        android:title="第四个模块的标题" >
        <CheckBoxPreference
            android:layout="@layout/preference_item"
            android:icon="@drawable/ic_launcher"
            android:key="parent_checkbox_preference"
            android:summary="点击后才可以让子控件可操作"
            android:title="父选择控件"
            android:widgetLayout="@layout/checkbox_preference_widget" />

        <!-- The visual style of a child is defined by this styled theme attribute. -->
        <!-- 子控件关联父控件,如果父控件选中后子控件才可用 -->
        <!--  android:layout="?android:attr/preferenceLayoutChild" -->
        <CheckBoxPreference
            android:dependency="parent_checkbox_preference"
            android:icon="@drawable/calculator"
            android:key="child_checkbox_preference"
            android:layout="@layout/preference_item"
            android:title="子控件(依托于父控件)"
            android:widgetLayout="@layout/checkbox_preference_widget" />
    </PreferenceCategory>

</PreferenceScreen>

 

这里面和传统的内容设置都是一样的,但是我通过

 

android:layout="@layout/prefs_category_widget"

 

android:layout="@layout/preference_item"
android:widgetLayout="@layout/checkbox_preference_widget" 

这三个属性,让我们可以通过布局文件来定义视图


需要注意的是:这里面的id都是系统的,所以我们可以直接在原始的xml文件中设置属性,这对于我们之前的操作无影响。只是换了布局而已。
prefs_category_widget

 
 
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#ededed"
    android:orientation="vertical" >

    <!-- 这个id需要注意,要引用安卓源码中的 -->
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:src="#dadada" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginBottom="13dp"
        android:src="#e2e2e2" />

    <TextView
        android:id="@android:id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="6dp"
        android:layout_marginBottom="2dp"
        android:textColor="#939393"
        android:textSize="14sp" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:src="#e9e9e9" />

</LinearLayout>

 




preference_item

 
 
<?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:background="@drawable/selector_item"
    android:gravity="center_vertical"
    android:minHeight="?android:listPreferredItemHeight"
    android:orientation="horizontal" >

    <ImageView
        android:id="@android:id/icon"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="3dp"
        android:scaleType="fitStart"
        android:src="@drawable/appstore" />

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="4dp"
        android:layout_marginTop="4dp" >

        <TextView
            android:id="@android:id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:ellipsize="marquee"
            android:fadingEdge="horizontal"
            android:singleLine="true"
            android:text="title"
            android:textColor="#4d4d4d"
            android:textSize="18.0sp" />

        <TextView
            android:id="@android:id/summary"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="15dp"
            android:layout_toRightOf="@android:id/title"
            android:layout_toLeftOf="@android:id/widget_frame"
            android:maxLines="2"
            android:text="summary"
            android:textColor="#AAAAAA"
            android:textSize="14sp" />

        <LinearLayout
            android:id="@android:id/widget_frame"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="4dp"
            android:layout_centerVertical="true"
            android:gravity="center_vertical"
            android:orientation="vertical" >
        </LinearLayout>
    </RelativeLayout>

</LinearLayout>

checkbox_preference_widget
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这里放上系统的id -->
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/checkbox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:button="@drawable/selector_checkbox"
    android:clickable="false"
    android:focusable="false" 

我的主代码用的是android推荐的activity和fragment结合的方式来实现的
package com.kale.shared;

import java.util.List;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class MainActivity extends PreferenceActivity {

    SharedPreferences sp;
    SharedPreferences.Editor editor;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置背景图,给activity设置后。所有fragment的背景都会改了,十分方便!
        getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.bgColor));
        //setContentView(R.layout.activity_main); 这里就不能设置布局了
        
        sp = getSharedPreferences("kaleShared", MODE_PRIVATE);
        editor = sp.edit();
        editor.putString("KEY", "value");
        editor.commit();
        
        if (sp.contains("KEY")) {
            System.out.println("have a key");
        }

        ;
    }
    /**
     * Populate the activity with the top-level headers.
     */
    @Override
    public void onBuildHeaders(List<Header> target) {
        //下面我们从源码的角度来自己搭建整个布局,所以我们设置布局。整个布局里面用一个list,id是默认的@android:id/list
        setContentView(R.layout.preference_hearders_frame);
        loadHeadersFromResource(R.xml.preference_headers, target);
    }
    
    public static class Prefs0Fragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // Load the preferences from an XML resource
            addPreferencesFromResource(R.xml.customer_preferences);
        }
        
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View v = inflater.inflate(R.layout.preference_hearders_frame, container, false);
            return v;
        }
    }
    
    /**
     * This fragment shows the preferences for the first header.
     */
    public static class Prefs1Fragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            

            // Make sure default values are applied.  In a real app, you would
            // want this in a shared function that is used to retrieve the
            // SharedPreferences wherever they are needed.
            PreferenceManager.setDefaultValues(getActivity(),R.xml.fx_setting, false);

            // Load the preferences from an XML resource
            addPreferencesFromResource(R.xml.fragmented_preferences);
        }
    }

   /**
     * This fragment contains a second-level set of preference that you
     * can get to by tapping an item in the first preferences fragment.
     */
    /**
     * @author:Jack Tony
     * @tips  :在第一个fragment中点击一个PreferenceScreen中的fragment对象启动的fragment
     * @date  :2014-8-4
     */
    public static class Prefs1FragmentInner extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            // Can retrieve arguments from preference XML.
            Log.i("args", "Arguments: " + getArguments());

            // Load the preferences from an XML resource
            addPreferencesFromResource(R.xml.fx_setting);
        }
    }

    /**
     * This fragment shows the preferences for the second header.
     */
    public static class Prefs2Fragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            // Can retrieve arguments from headers XML.
            Log.i("args", "Arguments: " + getArguments());

            // Load the preferences from an XML resource
            addPreferencesFromResource(R.xml.display_prefs);
        }
    }
}

 

源码下载:http://download.youkuaiyun.com/detail/shark0017/7717357


PreferenceActivity 分屏显示 分析 先上效果图: PreferenceActivity 设置代码如下,通过getListView 遍历视图结构,主要调整间距与背景色 package com.example.testsettings; import java.util.List; import android.os.Bundle; import android.preference.PreferenceActi 阅读详情

相关推荐

Python3 ACM模式输入输出全攻略:从牛客网到华为机试的实战技巧

本文详细解析了Python3在ACM模式下的输入输出处理技巧,针对牛客网、华为机试等在线评测系统。文章从input()函数本质出发,总结了六种高频输入模式的处理模板,并提供了链表、二叉树等数据结构的I/O实战方案,最后给出性能优化与常见避坑指南,帮助开发者高效应对算法笔试。

zero1的博客 998

彻底变换PreferenceFragment样式和全局设置字体样式的解决方案

一、PreferenceFragment样式修改 新样式直接上图,原样式为白色样式,即为PreferenceFragment的默认样式: ① 白底黑字;② SwitchPreference开关默认为蓝色; ③ ListPreference列表默认为白色,选中状态为蓝色;④ 每个设置选项标题颜色为蓝色 下图为新样式,彻底变换: ① 黑底白色; ② SwitchP...

Chin_Style的博客 3398

PLUS模型土地利用变化模拟使用简介

因子包括自然因子如社会因子,通过计算整理得到新图层,并以tif文件输出到驱动因子的文件夹里,驱动因子文件夹里存放的是tif文件格式。线性回归使用提供的所有的LULC资源数据,可以选择往后预测的年数,选择好数据之后,可以得出预测的每一年的每一用地类型面积数据。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。

qq_42831270的博客 5806

从源码角度一步一步来修改PreferenceActivity界面

         PreferenceActivity给我们封装好了一个数据存储对象,我们只需要在xml文件中写上控件即可完成简单的设置界面。但是系统提供的设置界面十分的简陋,要想做的好看必须要自己来进行修改。本文就是一步一步教大家如何定义自己的PreferenceActivity界面。   一、创建模块一(选择模块组)   先在res/xml文件夹中定义一个customer_pre...

weixin_34090643的博客 268

用Python+OpenCV给斗地主做个‘外挂’:手把手教你写个桌面记牌器(附源码)

本文详细介绍了如何使用Python和OpenCV开发一个智能斗地主记牌器,包括环境搭建、图像采集与预处理、扑克牌识别技术及PyQt5界面设计。通过实战案例,帮助开发者掌握图像处理与界面开发的结合应用,提升游戏辅助工具的编写能力。

weixin_29079643的博客 544

SDIO_WiFi驱动学习之安卓WLAN架构介绍及调用流程分析

一、引言 上一篇博客大概介绍了MMC子系统和SDIO相关知识及架构,这一篇博客则大致分析安卓的WLAN架构及上层如何调用WLAN驱动的流程。 虽然我工作的开发环境是安卓系统,但由于我不是专业的安卓应用/框架开发工程师,所以对安卓层的一些代码并不是特别熟悉,只能大致梳理流程,不专业的地方请谅解。 本文部分内容摘抄自网络,若有侵权,请联系删除。 二、安卓WLAN架构 1、应用框架(Application framework) 在应用程序框架级别是应用程序代码,它使用各种android.net..

陈子陌的博客 5088

自定义PreferenceActivity的样式

写一个系统的设置界面,将其设置样式就可以了       先建一个SettingActivity工程: AndroidManifest.xml: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cn.nj.setting" android:ver

niejing654092427的专栏 3889

绕开华为通道,获取解锁码解锁BootLoader

刷机有风险,操作需谨慎,如果因为各种因素导致手机变砖无法开机,本教程概不负责,望悉知 前言 这篇文章的大多内容是根据我自己找的一篇文章《绕开华为通道,获取解锁码解锁BootLoader》来编写的,里面的大部分内容是文章的原内容。下面的都是我参考文章中做了一些小部分的修改,增加了我华为P8手机的一些操作,下面开始讲述我的解锁过程。 因为华为官方在2018年的七八月份吧,关闭了解锁码的申请通道,这...

Martin.Mu `s Special Column 5万+

Kotlin:如何在PreferenceFragment中自定义视图

前几天项目开发中需要用kotlin做一个类似Android原生settings的页面,只不过ui相较preference自带的控件有些变化,特别是ListPreference的数据更新问题,困扰了好久,网上也只有只言片语聊到这个,所以记录下心得。......

last_supervisor的博客 525

山景BP10_128DBG开发板ADC_Key驱动

最近在学习山景BP10_128DBG开发板,想使用开发板上的按键。看了看原理图和之前用过的按键好像有点不一样。常见的按键都是判断IO口是否被拉低或拉高来判断按键是否被按下。山景BP10_128DBG开发板上的按键是ADC按键,每个按键按下之后ADC的采样值是不同的,通过ADC采样回来的值进而判断哪个按键按下。这种方式核心思想就是用一个ADC通道来节约IO口,对于IO紧张的芯片是一个不错的解决思路。

weixin_56646002的博客 1308

YOLO26改进策略【Neck】| CVPR2025 LCA轻量交叉注意力 跨层级双向引导 + 分层降噪增强,提升微小目标特征表达

简单相加、拼接融合无法建立深浅层双向约束关系,浅层微小目标易被深层背景覆盖,深层全局信息难以修正浅层噪声;普通单路自注意力仅单一层内建模依赖,缺少跨层级特征互引导机制,深浅特征信息割裂;标准多头跨注意力计算量大、参数量高,轻量化单模态检测/分割网络部署困难,无法区分前景目标与背景噪声。为此设计单模态轻量化交叉注意力LCA,构建浅层细节、深层语义双分支双向引导结构,轻量完成跨层级特征交互,同步降噪并强化单模态微小目标特征。

Limiiiing的博客 522

Android菜鸟的成长笔记——PreferenceFragment 与 自定义Preference

今天要做一个Setting界面,想到了可以用PreferenceActivity做。 public void addPreferencesFromResource (int preferencesResId),This method was deprecated in API level 11. 那就换成用PreferenceFragment做吧。 首先,实现一个Fragment ext

loucyin的博客 1215

【CT/电镜 重建教程 1.1】层析成像的精确实空间迭代重建算法(RESIRE)

在此,我们报告了RESIRE算法的发展用于准确的断层重建。与实空间迭代算法相比,RESIRE使用傅里叶切片定理或Radon变换作为正向投影,使用线性变换作为反向投影,两者都具有高精度。与EST和GENFIRE相比,RESIRE是一种实空间迭代算法,可以在并行计算中实现快速运行时间。

2401_87064292的博客 1060

android Preference相关样式修改

首先,Preference相关的东西都是以list的形式展现给大家的,所以,修改的样式一般可以分为2类:1.listitem背景修改。2.listitem具体view修改。我们分别对下面四种情况进行分析。 1.activity继承自PreferenceActivity 1).可以通过getListView()来获取listview对象,然后设置listview的相关属性。如4.0.3的设置应用...

冰之火的专栏 1036

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

PreferenceActivity与PreferenceFragment理解

一.概要 PreferenceActivity介绍:     PreferenceActivity实际是用来显示一个或多个 preferences header的,而 一个preference header 实际上就是一个与之对应的PreferenceFragment。因此实际上PreferenceActivity中包含了一个活着多个PreferenceFragment,里面有一

小小懒羊羊 7691

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

PreferenceActivity和PreferenceFragment对比

PreferenceActivity 负责加载选项列表界面布局文件 选项列表布局文件是以preference-headers作为根标签 header 作为子标签常用的属性有android:ico指定选项的图标,android:title指定选项的标题,android:summary指定选项的说明 PreferenceActivity使用界面布局文件的方式是:重写PreferenceActivi...

坚持学习 1011

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Preference、PreferenceActivity,PreferenceFragment

先推荐两篇总结得比较好的文章: Android中Preference的使用以及监听事件分析 Android应用Preference相关及源码浅析(Preference组件家族篇) 先看详细的还是看上面两个链接吧。下面我只是对上面链接的两篇文章做一个概括。 Preference及其体系的用处

淡淡的宁静的博客 839

PreferenceActivity和PreferenceFragment实现设置界面

在进行Android开发的过程中,有时需要实现一个设置界面,就像下面的系统的显示设置。这样的界面自己实现起来略显繁琐,好在Android中已经实现了这样的设置界面,那就是PreferenceActivity。并且PreferenceActivity还有一个莫大的好处,配置信息会自动使用SharedPreferences进行保存,无需我们自己实现。 将PreferenceActivity和Pr...

有的话没说出来之前,你是他的主人,一旦说出来你就成了他的奴隶||想要干好事,别太把自己当人,别把别人太不当人||认识这个人就是开了一扇窗户,就能看到不一样的东西,听到不一样的声音,能让你思考、觉悟,这已经够了 575

Android学习记录:PreferenceActivity和PreferenceFragment,返回主界面

昨天学习android开发,创建菜单设置时遇到一系列问题,记录下来。 首先是PreferenceActivity的问题,刚开始按照教程建立了一个加载xml的类,继承自PreferenceActivity,如下 public class PrefsFragement extends PreferenceActivity{ public void onCreate(Bundle savedIns

u013569148的专栏 1913

PreferenceActivity、PreferenceFragment使用

文件夹 文件夹 前言 PreferenceActivity preferences_scenario_1xml Preference Activity 演示 PreferenceFragment xml布局文件 Preference Fragment Preference Activity管理Fragment 适配 前言 转来转去又回到...

aodiyi6351的博客 288

Android开发之PreferenceActivity和PreferenceFragment

在PreferenceActivity中,给我们提供了四个选项集成控件:ListPreference,EditTextPreference,CheckBoxPreference和RingtonePreference。 注意: 通过PreferenceActivity生成的XML文件,命名方式是定死了的,生成的XML文件在data/data/<工程名>/shared_prefs/下,...

有的话没说出来之前,你是他的主人,一旦说出来你就成了他的奴隶||想要干好事,别太把自己当人,别把别人太不当人||认识这个人就是开了一扇窗户,就能看到不一样的东西,听到不一样的声音,能让你思考、觉悟,这已经够了 800

PreferenceActivity与PreferenceFragment应用

PreferenceActivity是一个非常有用的基类,当进行选项配置时,选项设置会以参数的形式保存,用Preferences进行保存。当Activity类继承PreferenceActivity,该Activity不需要自己控制Preferencces的读写,PreferenceActivtity会为我们处理一切。

fumier的专栏 742

Android学习笔记八.LauncherActvity 之LauncherActivity、PreferenceActivity、PreferenceFragment

深入理解LauncherActvity 之LauncherActivity、PreferenceActivity、PreferenceFragment          从下图我们可以知道,LauncherActivity、PreferanceActivity均继承于ListActivity,其中LauncherActivity实现当列表界面列表项被点击时所对应的Acitvity被启动;Pr

嵌入式Developer_小J的天空 7739

PreferenceActivity使用介绍

目录 一,Preference介绍 二,PreferencesActivity介绍 三,PreferenceActivity的使用 四,PreferenceActivity分别和ListFragment,PreferenceFragment组合使用 五,Preference数据获取 总结 一,Preference介绍 Android提供的preference以键值对的方式来处理这种...

ezconn的博客 8783
上一篇: NIS企业级应用案例-统一Linux和Windows身份验证(三)
下一篇: maven
weixin_34219944
博客等级 码龄11年 4122粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值