Android入门/TabHost(十二)

android之实现底部TabHost 先说布局文件,如下:利用android:layout_alignParentBottom="true" 实现底部显示 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:i 阅读详情
java.lang.Object
   ↳android.view.View
    ↳android.view.ViewGroup
     ↳android.widget.FrameLayout
      ↳android.widget.TabHost

类概述

一个窗口视图的容器。
这个对象包含两个孩子:一个标签页标签,用户点击来选择一个特定的标签,显示该网页的内容,一个FrameLayout对象。
个别元素通常是控制使用这个容器中的对象,而不是设置子元素本身的值。

TabHost控件可以达到分页的效果



UI 布局 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost	
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   	xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"> 
    
    <TabWidget android:id="@android:id/tabs"  
        android:layout_height="wrap_content"
        android:layout_width="fill_parent">  
	</TabWidget>  
    
    <FrameLayout 
        android:id="@android:id/tabcontent"  
        android:paddingTop="65dp" 
        android:layout_width="match_parent"
        android:layout_height="match_parent"> 
        
        
        <LinearLayout 
            android:layout_height="wrap_content" 
            android:id="@+id/Tab1" 
            android:orientation="horizontal" 
            android:layout_width="fill_parent">  
	              <Button 
		               android:layout_width="fill_parent" 
		               android:layout_height="wrap_content" 
		               android:id="@+id/btnTab1"
		               android:layout_weight="2"
		               android:text="Tab1">
		           </Button>  
		           <EditText 
		                android:layout_height="wrap_content" 
		                android:id="@+id/edtTab1" 
		                android:layout_weight="1"
		                android:textAppearance="@android:attr/autoCompleteTextViewStyle"
		                android:layout_width="fill_parent" 
		                android:inputType="none">               
		           </EditText>  
		         
        </LinearLayout>  
        <LinearLayout 
             android:layout_height="wrap_content" 
             android:id="@+id/Tab2"
             android:layout_width="fill_parent" 
             android:orientation="horizontal">  
		            
			 <GridView
			     xmlns:android="http://schemas.android.com/apk/res/android"
			     android:id="@+id/gridview"
			     android:layout_width="fill_parent"
			     android:layout_height="fill_parent"
			     android:numColumns="auto_fit"
			     android:verticalSpacing="10dp"
			     android:listSelector="@drawable/ic_launcher"
			     android:horizontalSpacing="10dp"
			     android:columnWidth="90dp"
			     android:stretchMode="columnWidth"
			     android:gravity="center" 
			/>
            
           </LinearLayout>  
           
         <RelativeLayout 
             android:layout_height="wrap_content" 
             android:id="@+id/Tab3"
             android:layout_width="fill_parent" 
             android:orientation="horizontal">  
		             <EditText
		                 android:layout_width="fill_parent" 
		                 android:layout_height="wrap_content"
	                     android:textAppearance="@android:attr/autoCompleteTextViewStyle"
		                 android:id="@+id/edtTab3"
		                 android:inputType="none">    
		             </EditText>  
			        <ImageButton 
			            android:id="@+id/imgbtn3"
			            android:layout_width="fill_parent"
			            android:layout_height="wrap_content"
			            android:src="@drawable/ai"
			            android:layout_below="@id/edtTab3"
			            android:contentDescription="@string/app_name"/>
           </RelativeLayout>  
        </FrameLayout>   
</TabHost>

night.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:paddingBottom="4dp"
    android:layout_width="fill_parent" >
    
    <ImageView 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/ItemImage"
        android:layout_centerHorizontal="true">
    </ImageView>
    <TextView   
               android:layout_width="wrap_content"   
               android:layout_below="@+id/ItemImage"   
               android:layout_height="wrap_content"   
               android:text="TextView"   
               android:layout_centerHorizontal="true"   
               android:id="@+id/ItemText">  
    </TextView>  
    
    
</RelativeLayout>

Java代码
public class MainActivity extends TabActivity {	// TabActivity

	private Button btnTab1;
	private ImageButton imgbtn3;
	private EditText edtTab1,edtTab3;
	public Context context;
	public simple simpleAdapter;
	private GridView gridview;
	private final static String TAB1 = "tab1";
	private final static String TAB2 = "tab2";
	private final static String TAB3 = "tab3";
	
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        PreUIInit();
        UIInit();
        PostUIInit(); 
        Night();
    }

    private void PreUIInit()
    {
    	setContentView(R.layout.activity_main);
    	// 得到TabHost对象
    	TabHost tabs = getTabHost();
    	//设置Tab1  
    	TabSpec tab1 = tabs.newTabSpec(TAB1);
    	tab1.setIndicator(TAB1);
    	tab1.setContent(R.id.Tab1); // Tab1 --> LinearLayout  @+id/Tab1
    	tabs.addTab(tab1);
    	 //设置Tab2  
        TabSpec tab2 = tabs.newTabSpec(TAB2);  
        tab2.setIndicator(TAB2);        
        tab2.setContent(R.id.Tab2);      
        tabs.addTab(tab2);  
        //设置Tab3 
        TabSpec tab3 = tabs.newTabSpec(TAB3);
        tab3.setIndicator(TAB3);
        tab3.setContent(R.id.Tab3);
        tabs.addTab(tab3);
    }
    
    private void UIInit()
    {
    	// tab1
	    btnTab1=(Button)this.findViewById(R.id.btnTab1);  
        edtTab1=(EditText)this.findViewById(R.id.edtTab1);  
        // tab3
        imgbtn3=(ImageButton)this.findViewById(R.id.imgbtn3);  
        edtTab3=(EditText)this.findViewById(R.id.edtTab3);  
    }
    
    private void PostUIInit()
    {
    	btnTab1.setOnClickListener(listener);
    	imgbtn3.setOnClickListener(listener);
    }
    
    private OnClickListener listener = new OnClickListener() 
    {
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.btnTab1:
				edtTab1.setText(TAB1);
				break;
			case R.id.imgbtn3:
				edtTab3.setText(TAB3);
				break;
			}
			
		}
	};
	
    
    private void Night()
    {
		
				/** 1. 处理好数据 , 生成动态数组	*/		
				gridview = (GridView)findViewById(R.id.gridview);
			
				ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String,Object>>();
				for(int i=0;i<9;i++)
				{
					HashMap<String, Object> map = new HashMap<String, Object>();
					map.put("ItemImage", R.drawable.ic_action_search);
					map.put("ItemText", "No."+i);
					//添加到动态数组
					list.add(map);
				}
				
				/**  2. 生成适配器 	 */			
				simpleAdapter = new simple(this, 
							list,					//数据源
							R.layout.night,			//Items 布局
							new String[]{"ItemImage","ItemText"},// 动态数组list 对应的子项的名称
							new int[]{R.id.ItemImage,R.id.ItemText}// night.xml 内对应组件的id
				);
				
		    	/** 3. gridview添加并且显示
		    	    4.添加消息处理
		    	*/
		    	gridview.setAdapter(simpleAdapter);
				gridview.setOnItemClickListener(Itemlistener);
    		
    }
	// OnItemClickListener 事件处理
	private OnItemClickListener Itemlistener = new OnItemClickListener() {

		public void onItemClick(AdapterView<?> parent, 	//AdapterView被点击时发生
								View view, 				//AdapterView内被点击的视图
								int position,			//适配器中的位置的视图
								long id)				//被点击的项行的id
		 {
				@SuppressWarnings("unchecked")
				HashMap<String, Object> item = (HashMap<String, Object>)parent.getItemAtPosition(position);
			    //显示所选Item的ItemText  
				setTitle((String)item.get("ItemText"));
				
				Log.v("ONITEMCLICK","position = "+position);
				simpleAdapter.setSelected(position);
				//simpleAdapter.setContext(context);
		 }
		
	};
	
	/** 内部类  Adapter*/
	public  class simple extends SimpleAdapter{
		
		private List<HashMap<String, Object>> list;
		private int selected = -1;
		//private Context context;
		// 继承父类的构造
		public simple(Context context, List<HashMap<String, Object>> data,
				int resource, String[] from, int[] to) 
		{
			super(context, data, resource, from, to);	
			this.list = data;
		}
		// 获取当前点击的位置
		public void setSelected(int position)
		{
			this.selected = position;
			notifyDataSetChanged();
			Toast.makeText(MainActivity.this, "selected = "+selected, Toast.LENGTH_SHORT).show();
		}
			
		// 获得Items的数量
		public int getCount() 
		{	
			return this.list.size();
		}

		// 根据ListView位置返回View
		public Object getItem(int position)
		{
			return this.list.get(position);
		}

		// 根据ListView位置得到List中的ID
		public long getItemId(int position) 
		{
			return position;
		}
		//	根据位置得到View对象	3个参数[  List中的ID ],[ Items的视图  ],[  父类的视图  ]
		public View getView(int position, View convertView,ViewGroup parent) 
		{
			Log.v("getView", "position = "+position);
			
		
			if(selected == position)
			{
				// 大致作用是 绑定 layout布局文件 ,和findViewById差不多作用,只是一个是找Widget控件 ,一个是找Layout布局文件
				 LayoutInflater inflater =  (LayoutInflater)MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
				 convertView = inflater.inflate(R.layout.night, null);
				 
				 ImageView img = (ImageView)convertView.findViewById(R.id.ItemImage);
				 img.setImageResource(R.drawable.ic_launcher);  

				 TextView text = (TextView)convertView.findViewById(R.id.ItemText);
				 text.setText(R.string.app_name);
				 
				 return convertView;
			}
			return super.getView(position, convertView, parent);
		}
		

	} 
    
}






安卓——选项卡——TabHost 选显卡:类似于QQ VX等主页面下方的几个小格子,就是这个东西 ↓ \downarrow ↓ 需要TabHost | TabWidget | FrameLayout三个组件 TabHost => id值固定使用@android:id/tabhost Tabwidget => id值固定使用@android:id/tabs FrameLayout => id值固定... 阅读详情

相关推荐

Android studio TabHost应用设计

tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("标签页一").setContent(R.id.tab1));tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("标签页三").setContent(R.id.tab3));android:text="tab 1 的布局"android:text="tab 2 的布局"android:text="tab 3 的布局"

corlin6688的博客 999

[Android] 选项卡组件TabHost

Tab选项卡实现多个分页之间的快速切换,每个分页可以显示不同的内容,在Android平台提供了TabHost组件实现Tab选项卡的功能,选项卡组件的主要功能是可以进行应用程序分类管理。 每个选项卡称为一个Tab,而包含这多个选项卡的容器称为TabHost。 1.TabHost的常用方法 public TabHost (Context context): 创建TabHost类对象 public void addTab(TabHost.TabSpec tabSpec):增加一个tab public Tab.

sam___1的博客 5904

Android中TabHost组件的实现方法

TabHost是Android开发中用于创建选项卡式界面的组件,它允许用户在不同的视图间切换,而无需离开当前Activity。通过TabHost,开发者可以高效地组织多个功能模块,提升用户体验,尤其适用于内容分类较多的应用。在Android中,Intent用于启动新的Activity或者Service,以及发送广播。在TabHost的配置中,Intent用于定义和控制每个标签页启动的Activity。

weixin_28888459的博客 674

Android选项卡TabHost功能和用法

1、选项卡TabHost介绍 TabHost可以方便地在窗口上放置多个标签页,每个标签页相当于获得了一个与外部容器大小相同的组件摆放区域 TabHost是一个简单的容器,提供如下两种方法来创建选项卡 newTabSpec(String tag):创建选项卡 addTab(TabHost.TabSpec tabSpec):添加选项卡 使用TabHost有三种方法 2、方法1,继承TabActivi...

钻石 4万+

Android TabHost选项卡框架实战指南

TabHost是Android开发中用于实现选项卡功能的核心组件。它允许用户在不同的界面视图之间切换,这对于构建多页面的应用程序至关重要。TabHost组件通常与TabWidget和FrameLayout配合使用,实现带有标签的视图切换功能。要为Tab设置自定义布局,可以通过TabSpec类来实现。TabSpec为自定义标签页提供了配置,比如内容视图、标题、图标等。要设置自定义布局,可以使用方法。以下是一个简单的示例,展示如何为TabHost中的一个Tab。

weixin_32251525的博客 923

从零开始:在Ubuntu 22.04上配置Isaac Gym Preview 3环境(含常见错误解决方案)

本文提供了在Ubuntu 22.04系统上从零开始配置Isaac Gym Preview 3环境的完整实战指南。内容涵盖NVIDIA驱动安装、Conda环境搭建、CUDA与PyTorch版本精准匹配、Isaac Gym核心安装与验证,并重点介绍了针对四足机器人等复杂系统的强化学习训练环境配置、常见错误解决方案及性能调优技巧,旨在帮助开发者高效部署这一高性能物理仿真平台。

weixin_29048775的博客 392

Android中TabHost嵌套TabHost

在嵌套TabHost时,先后遇到了以下情况: 问题1:内部TabHos无显示,只显示了其中的一个Activity; 解决:按下文比对主子TabHos的布局文件和java文件并修改; 问题2:如上所做后,遇到下文所提的问题一; 解决:按其方案可解决; 问题3:如上所做后,发现点击主/子TabHost中ListView的item均报异常,如下文所提的问题二; 解决:按其方案可解决。 下文

berber78的专栏 5561

Cesium生态盘点:超图、火星3D等15个二次开发框架对比

本文深入解析Cesium生态中的15个二次开发框架,包括超图、火星3D等主流选择,帮助开发者根据项目需求进行精准选型。从性能表现、功能完备性、开发友好度等维度进行对比,特别适合需要处理地理空间数据和构建三维可视化的JavaScript开发者。

weixin_28197941的博客 497

Android修行手册 - TabHost回忆

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

空名先生 4876

AI 视觉宠物喂食器:智能识别 + 精准投喂,打造宠物喂养新体验

AI 视觉宠物喂食器将边缘 AI 计算与传统硬件结合,既解决了传统喂食器的核心痛点,又兼顾了 DIY 的易用性和扩展性。无论是宠物主人 DIY 使用,还是小型创客团队产品化,该方案都具备较高的实用价值和落地性,为宠物智能化喂养提供了轻量化的实现路径。

weixin_42300449的博客 417

OpenClaw 2026.3.13 踩坑实录:飞书HTTP协议降级Bug与多版本回归问题汇总

摘要:OpenClaw v2026.3.13存在多个严重回归问题,包括飞书API调用协议意外降级为HTTP导致连接失败(#46100)、本地Gateway诊断矛盾(#45504)及设备配对CLI命令失效等。该版本发布流程本身也存在异常,被迫以v2026.3.13-1标签重新发布。建议飞书用户回退至v2026.3.8稳定版,其他用户谨慎升级。本文详细记录了各Bug现象、影响范围及临时解决方案,并梳理了飞书通道的"多版本回归史",指出其根源在于架构变迁和测试覆盖不足。最后提供了包含配置备份、

Maynor的博客 869

android 自定义tabhost,安卓选项卡的实现方法(TabActivity),自定义TabHost容器

初学者。选项卡是安卓常用的一种功能。每个选项对应一个活动。一般由TabHost实现。 常用的实现方法有两种:1.继承TabActivity一般过程:(1) 在主布局文件中定义框架布局,并在里面加入若干个子布局。每个子布局对应TabHost容器里的一个选项的布局。(2) 主活动继承TabActivity。用getTabHost()获取TabHost对象。通过创建对象引用LayoutInflate类中...

weixin_42337065的博客 476

修改legged_gym地形后仍然是平地,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1563

Android studio TabHost选项卡

(1)在Android学习过程中,用户界面设计模块的TabHost是基础且比较重要的一部分(虽然已经过时,但仍然值得了解)。 (2) 1. TabHost常用组件 TabWidget : 该组件就是TabHost标签页中上部 或者 下部的按钮, 可以点击按钮切换选项卡; TabSpec : 代表了选项卡界面, 添加一个TabSpec即可添加到TabHost中; -- 创建选项卡 : ne...

zxd313a的博客 7285

TriCore架构-基于TC397的启动流程

TC397芯片的启动流程分为三个关键阶段:固件启动(BootFirmware)、Bootloader引导和应用程序启动。BootFirmware作为硬件信任根,包含SSW基础初始化、CHSW自检和BSL应急刷写通道。Bootloader承担安全验证和程序引导功能,支持双分区(AB-SWAP)和双引导方案(PBL/SBL)。安全启动通过校验机制确保软件完整性,提供三种可选技术方案。应用程序启动阶段实现软件双分区管理,支持SOTA更新。整个流程体现了汽车电子系统的安全设计理念,通过硬件级保护与软件验证相结合确保

xiandang8023的博客 987

用 i18n 驯服标准文案:SAP Fiori elements 的 UI 文本本地化与可替换实践全景

本文系统介绍了SAP Fiori elements应用中UI文本本地化的全面解决方案。从框架层与应用层文本的分类原则出发,详细解析了标准文本替换的四步法:资源准备、键值定位、模型配置和验证部署。文章特别针对不同开发场景,提供了XML、ABAP CDS和CAP CDS三种注解方式的文本覆盖写法示例。同时深入探讨了语言回退机制、表格组件标准键覆盖等关键技术细节,并指出了实际项目中的常见问题与解决方案。通过结合官方文档和社区实践,为开发人员在不破坏框架约定的前提下,实现稳定可靠的UI文本本地化提供了完整指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 296

android TabHost基础讲解

看到这个题目,我想做andorid开发有段时间的朋友对之在熟悉不过了,不过我之前开发Tab分栏的都是用ActivityGroup模拟实现的.其实原理上和TabHost差不多:都是用LocalActivityManager.startActivity(),获取目标的window将之转化为view,最后显示出来.       其实最合理的是TabActivity+TabHost实现分栏效果,但是我之

jj120522的专栏 3717

基于计算机视觉的无人便利店技术:从算法到部署的系统化实战指南

摘要:本文系统介绍了基于计算机视觉的无人便利店技术方案,提出"商品检测-跟踪-动作识别-防损-结算"五段式流水线架构。详细阐述了YOLOv8-Seg商品检测、OC-Sort多目标跟踪、3D-CNN+ST-GCN动作识别等核心算法实现,并完成NVIDIA Jetson Xavier NX边缘端的优化部署。通过TensorRT量化、DeepStream加速等技术手段,系统在保持94.7%动作识别准确率的同时,将漏单率降至0.8%,单店云端算力成本较行业平均降低84%。所有代码已开源,可直接应

博客 625

Android TabHost总结

听说现在流行用fragment Tabhost 代替TabHost,刚入门,还是从tabHost开始。 TabHost即微信底部的选项卡,直接上代码: 布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an

superyuanzhe的专栏 494

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android学习之TabHost

菜鸟学习android之TabHost.查询资料说android有这么个玩意--------选项卡。首先聊聊什么是选项卡,从网上搜索资料显示:一个顶部的按钮(可点击的)的切换卡部分,一个主内容区(上图显示“第二个窗体”字体的)的主显示区。举个简单点的例子吧,大家可以看看android手机上的通讯录,用的就是选项卡,点击顶部的选项卡一,二,三,在显示区会有不同的内容。强烈推荐看看手机上的通讯录。

warkey_song的专栏 6945

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

安卓 TabHost

MainActivity.java import android.app.Activity; import android.app.ActivityGroup; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.TabHost; public class MainActivity ...

有勇气的牛排博客 638

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android中的TabHost

介绍  有时,我们想在一个window中显示多个视图,这时就需要用到Tab容器。在Android里它叫TabHost。 使用TabHost有两种方式: 在相同的activity中使用TabHost导航多个视图使用TabHost导航多个Activity(通过intents) Tab应用的结构 TabHost的Activity的结构如下: 先看个示例: layou

xinem的专栏 1万+

android tabhost用法详解,android Tabhost部件详解

本文结合源代码和实例来说明TabHost的用法。使用TabHost 可以在一个屏幕间进行不同版面的切换,例如android自带的拨号应用,截图:查看tabhost的源代码,主要实例变量有:private TabWidget mTabWidget;private FrameLayout mTabContent;private List mTabSpecs也就是说我们的tabhost必须有这三个东西,...

weixin_28950403的博客 772

Android:TabHost学习

前言 TabHost是用来在一个界面显示多个标签的组件,现在已经被Fragment代替,原因是可扩展性非常差,并且需要依赖ActivityGroup。现在对它进行学习是为了学习它构建界面的特点,更好的理解Android的UI。 TabHost组件在安卓4.0之后已经被废弃了,建议使用Fragment组件来代替它。由于其设计违反了Activity单一窗口原则,它可以同时加载多个Activity,然后再它们之间进行来回切换;另外有个很致命的问题就是当点击别的选项时,按下Back后退键,它会使整个应用程序都退出

weixin_44195634的博客 279

android TabHost

虽然tabhost已经被官方废弃了,但是用还是能用,其搭配activity或者fragment都能很好的实现页面的切换 使用条件:MainAcitivy必须继承自TabActivity,通过调用getTabHost();方法获取TabHost对象 TabHost常用组件: TabWidget:该组件就是TabHost标签页中上部 或者 下部的按钮, 可以点击按钮切换选项卡

kangkang_style的博客 560

android tabhost 多个activity,Android:TabHost中Activity的生命周期问题

用过TabHost制作多个activity的分页效果的朋友应该知道,tabhost中镶嵌的activity的onCreate和onDestroy是和tabhost关联的,在创建了tabhost之后,第一次访问某个activity会执行这个activity的oncreate事件,以后切回来时只会执行onResume事件。而一般情况下tabhost内的activtiy的onDestroy事件会在调用t...

weixin_36314117的博客 365
上一篇: Android入门/PopupWindow(十一)
下一篇: Android入门/Gallery(十三)
多格AI零代码
博客等级 码龄15年 40粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值