Android修行手册 - TabHost回忆

article/2025/9/9 21:49:03
往期文章分享
  • 点击跳转=>《导航贴》- Unity手册,系统实战学习
  • 点击跳转=>《导航贴》- Android手册,重温移动开发

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎私我,交流群让学习不再孤单

在这里插入图片描述

本文约6千字,新手阅读需要7分钟,复习需要3分钟收藏随时查阅不再迷路

文章目录

    • 👉关于作者
    • 👉实践过程
      • 😜属性方法
      • TabHost的常用方法
      • TabWidget常用属性
      • TabWidget常用方法
      • TabHost.TabSpec类定义的常用方法
      • 😜示例
    • 👉其他

👉实践过程

Hello,大家好啊,我是小空,大家在开发中一定遇见过切换卡(聊天类软件底部的切换),不论是自己写还是三方优秀框架实现方式有很多种,但其实官方为我们有提供这个组件,只是兼容性差不被人常用而已。

TabHost是个容器,包含TabWidget和FrameLayout(其内有多个布局)。

TabWidget代表的是用来点击切换选项卡的按钮,你的FrameLayout内部有几个一级布局,这个就有几个选项卡

TabSpec :布局写好之后就需要管理,而管理靠的是TabSpec

先说总结:该控件已经被遗弃了,不怎么用了,使用TabLayout替代,如果还想学习,可以继续。

😜属性方法

TabHost的常用方法

  • public TabHost (Context context): 创建TabHost类对象
  • public void addTab(TabHost.TabSpec tabSpec):为TabHost增加一个tab
  • public TabHost.TabSpec newTabSpec(String tag):创建一个TabHost.TabSpec对象,并且关联到TabHost
  • public View getCurrentView():取得当前的View对象
  • public String getCurrentTabTag():获得当前标签选项卡的Tag选项内容
  • public int getCurrentTab():获取当前标签选项卡的ID
  • public void setCurrentTab(int index):设置当前显示的Tab编号
  • public View getCurrentTabView():获取当前标签选项卡的视图
  • public void setCurrentTabByTag(String tag):设置当前显示的Tab名称
  • public void setOnTabChangedListener(TabHost.OnTabChangeListener l):设置选项监听事件
  • public void setup():使用findViewById()加载TabHost,在新增一个标签选项卡之前,必须调用它,即使是kotlin
  • public FrameLayout getTabContentView():获取并保存标签选项卡内容
  • public void clearAllTabs():清除所有关联到当前TabHost的标签选项卡

TabWidget常用属性

  • android:divider: 可绘制对象,被绘制在选项卡窗口间充当分割物
  • android:tabStripEnabled:确定是否在选项卡中绘制
  • android:tabStripLeft:用来绘制选项卡下面的分割线左边部分的可视化对象
  • android:tabStripRight: 用来绘制选项卡下面的分割线右边部分的可视化对象

TabWidget常用方法

  • public TabWidget (Context context):创建TabWidget 实例
  • public int getTabCount(): 返回标签选项卡的数量
  • public void addView(View child):向TabWidget增加view
  • public void focusCurrentTab(int index):设置当前标签选项卡并且使其获得焦点
  • public void setCurrentTab(int index):设置当前标签选项卡

TabHost.TabSpec类定义的常用方法

  • public TabHost.TabSpec setContent(int viewId):设置要Layout中的组件id
  • public TabHost.TabSpec setContent(Intent intent):指定一个activity的Intent对象作为选项卡内容,会跳转,相当差劲,因为这个影响很大
  • public TabHost.TabSpec setIndicator(View view):设置一个view为选项卡
  • public TabHost.TabSpec setIndicator(CharSequence label):设置一个选项卡为文本
  • public TabHost. setIndicator (ChaSequence label ,Drawable icon):设置选项卡包含文本和图标
  • **public String getTag():获取tag选项字符串

😜示例

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/idTabHost"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!--TabWidget   每个Tab的选项,即Tab标签,如果想要放到底部,则可用android:layout_gravity="bottom"--><TabWidgetandroid:id="@android:id/tabs"android:layout_width="match_parent"android:layout_height="50dp" /><FrameLayoutandroid:id="@android:id/tabcontent"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="50dp"><!--Tab页1--><LinearLayoutandroid:id="@+id/tab_1"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_horizontal"android:background="@color/color_00ff00"android:orientation="vertical"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="芝麻粒儿:标签一" /></LinearLayout><!--Tab页2--><LinearLayoutandroid:id="@+id/tab_2"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_horizontal"android:background="@color/color_ff0000"android:orientation="vertical"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="芝麻粒儿:标签二" /></LinearLayout><!--Tab页3--><LinearLayoutandroid:id="@+id/tab_3"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_horizontal"android:background="@color/color_0000ff"android:orientation="vertical"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="芝麻粒儿:标签三" /></LinearLayout></FrameLayout>
</TabHost>

其中【@+id/tabhost】有两种情况:如果你的activity是继承的非TabActivity(这个是系统内置的),则id可以随便取,如果是继承的TabActivity则可以将id设置为内置的【android:id=“@android:id/tabhost”】,在代码中直接使用getHost()方法获取到TabHost对象。

其他id如:【“@android:id/tabs】【”@android:id/tabcontent】都是内置的且建议这样用。

class ActivityTabHost : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_tab_host)idTabHost.setup();val page1 = idTabHost.newTabSpec("tab1").setIndicator("这是").setContent(R.id.tab_1)idTabHost.addTab(page1)val page2 = idTabHost.newTabSpec("tab2").setIndicator("标签").setContent(R.id.tab_2)idTabHost.addTab(page2)val page3 = idTabHost.newTabSpec("tab3").setIndicator("选项卡").setContent(R.id.tab_3)idTabHost.addTab(page3);}
}

如果继承的普通Acitivity,则必须适应tabHost的setup方法,如果继承的是TabActivity则不用。

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生


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

相关文章

Android TabHost的使用

1. 最简单的TabHost&#xff0c;Tab来自于layout下的元素 &#xff08;只从1个Layout中取数据&#xff09; &#xff08;1&#xff09;效果图 &#xff08;2&#xff09;代码 1&#xff09;tab_demo.xml <?xml version"1.0" encoding"utf-8"?&g…

TabHost详解

前言&#xff1a;今天仔细研究了下TabHost&#xff0c;主要是为了实现微信底部导航栏的功能&#xff0c;最后也给出一个链接&#xff0c;这位老兄用TabHost基本做出来了微信导航栏。 正文 TabHost的实现分为两种&#xff0c;一个是不继承TabActivity&#xff0c;一个是继承自…

Android选项卡TabHost功能和用法

1、选项卡TabHost介绍 TabHost可以方便地在窗口上放置多个标签页&#xff0c;每个标签页相当于获得了一个与外部容器大小相同的组件摆放区域 TabHost是一个简单的容器&#xff0c;提供如下两种方法来创建选项卡 newTabSpec(String tag):创建选项卡 addTab(TabHost.TabSpec tabS…

[Android] 选项卡组件TabHost

Tab选项卡实现多个分页之间的快速切换&#xff0c;每个分页可以显示不同的内容&#xff0c;在Android平台提供了TabHost组件实现Tab选项卡的功能&#xff0c;选项卡组件的主要功能是可以进行应用程序分类管理。 每个选项卡称为一个Tab&#xff0c;而包含这多个选项卡的容器称为…

交叉熵:计算交叉熵损失函数nn.CrossEntropyLoss()

首先要提出的问题是。。。什么是损失函数&#xff1f;干什么的&#xff08;功能&#xff09;&#xff1f;类型有哪些&#xff1f; 1.什么是损失函数&#xff1f; 损失函数&#xff08;loss function&#xff09;或 代价函数&#xff08;cost function&#xff09;是将随机事件或…

softmax函数与交叉熵损失函数

本文主要介绍了当前机器学习模型中广泛应用的交叉熵损失函数与softmax激励函数。 这个损失函数主要应用于多分类问题&#xff0c;用于衡量预测值与实际值之间的相似程度。 交叉熵损失函数定义如下: L C E ( y ^ , y ∗ ) − ∑ i 1 N c l a s s e s y i ∗ l o g ( y i ^ …

【交叉熵损失函数】关于交叉熵损失函数的一些理解

目录 0. 前言1.损失函数&#xff08;Loss Function&#xff09;1.1 损失项1.2 正则化项 2. 交叉熵损失函数2.1 softmax2.2 交叉熵 0. 前言 有段时间没写博客了&#xff0c;前段时间主要是在精读一些计算机视觉的论文&#xff08;比如yolov1&#xff09;&#xff0c;以及学cs23…

CrossEntropy交叉熵损失函数及softmax函数的理解

参考链接1 参考链接2 参考链接3 参考链接4 &#xff08;一&#xff09;什么是Sigmoid函数和softmax函数&#xff1f; 提到二分类问题容易想到逻辑回归算法&#xff0c;而逻辑回归算法最关键的步骤就是将线性模型输出的实数域映射到[0, 1]表示概率分布的有效实数空间&#xff…

【基础篇】交叉熵损失函数(Cross Entropy Loss)

文章目录 1. 理论知识2. 代码 1. 理论知识 我们需要关注那些按常理来说不太可能发生的事情。『信息量』就是用来度量事件的不确定性&#xff0c; 事件包含的信息量应与其发生的概率负相关 。假设 X X X是一个离散型随机变量&#xff0c;它的取值集合为 { x 1 , x 2 , . . . ,…

损失函数-交叉熵的推导和二分类交叉熵

交叉熵 期望&#xff1a; 期望就是所有随机变量的均值。 E(X)X1*P&#xff08;X1&#xff09;X2*P&#xff08;X2&#xff09;X3*P&#xff08;X3&#xff09; 熵&#xff1a; 熵表示所有信息量的期望。 信息量如何计算呢&#xff1f; 概率值取Log&#xff0c;然后加个负…

深度学习中的损失函数(交叉熵)

0、前景介绍 对于线性回归模型适用于输出为连续值的情景&#xff0c;但是在模型输出是一个像图像类别这样的离散值时。对于这样离散值的预测问题&#xff0c;通常使用一些例如sigmoid/softmax的分类模型。 1. 图像分类任务 假设下面两个模型都是通过softmax的方式得到对于每…

图示Softmax及交叉熵损失函数

Softmax函数 Softmax是将神经网络得到的多个值&#xff0c;进行归一化处理&#xff0c;使得到的值在之间&#xff0c;让结果变得可解释。即可以将结果看作是概率&#xff0c;某个类别概率越大&#xff0c;将样本归为该类别的可能性也就越高。Softmax就如下图&#xff08;借鉴李…

最全的交叉熵损失函数(Pytorch)

损失函数 引言BCELossBCEWithLogitsLossNLLLossCrossEntropyLoss总结参考 引言 这里主要讲述pytorch中的几种交叉熵损失类&#xff0c;熵是用来描述一个系统的混乱程度,通过交叉熵我们就能够确定预测数据与真是数据之间的相近程度。交叉熵越小&#xff0c;表示数据越接近真实样…

简单的交叉熵损失函数,你真的懂了吗?

个人网站&#xff1a;红色石头的机器学习之路 CSDN博客&#xff1a;红色石头的专栏 知乎&#xff1a;红色石头 微博&#xff1a;RedstoneWill的微博 GitHub&#xff1a;RedstoneWill的GitHub 微信公众号&#xff1a;AI有道&#xff08;ID&#xff1a;redstonewill&#xf…

交叉熵损失概念

交叉熵是信息论中的一个概念&#xff0c;要想了解交叉熵的本质&#xff0c;需要先从最基本的概念讲起。 1. 信息量 首先是信息量。假设我们听到了两件事&#xff0c;分别如下&#xff1a; 事件A&#xff1a;巴西队进入了2018世界杯决赛圈。 事件B&#xff1a;中国队进入了2…

softmax交叉熵损失函数深入理解(二)

0、前言 前期博文提到经过两步smooth化之后&#xff0c;我们将一个难以收敛的函数逐步改造成了softmax交叉熵损失函数&#xff0c;解决了原始的目标函数难以优化的问题。Softmax 交叉熵损失函数是目前最常用的分类损失函数&#xff0c;本博文继续学习Softmax 交叉熵损失函数的改…

史上最全交叉熵损失函数详解

在我们自学神经网络神经网络的损失函数的时候会发现有一个思路就是交叉熵损失函数&#xff0c;交叉熵的概念源于信息论&#xff0c;一般用来求目标与预测值之间的差距。比如说我们在人脑中有一个模型&#xff0c;在神经网络中还有一个模型&#xff0c;我们需要找到神经网络模型…

交叉熵损失函数原理详解

交叉熵损失函数原理详解 之前在代码中经常看见交叉熵损失函数(CrossEntropy Loss)&#xff0c;只知道它是分类问题中经常使用的一种损失函数&#xff0c;对于其内部的原理总是模模糊糊&#xff0c;而且一般使用交叉熵作为损失函数时&#xff0c;在模型的输出层总会接一个softm…

损失函数——交叉熵损失函数

一篇弄懂交叉熵损失函数 一、定义二、交叉熵损失函数&#xff1a;知识准备&#xff1a;1、信息熵&#xff1a;将熵引入到信息论中&#xff0c;命名为“信息熵”2、 KL散度&#xff08;相对熵&#xff09;&#xff1a; 交叉熵&#xff1a;结论&#xff1a; Softmax公式Sigmoid常…

交叉熵损失函数详解

我们知道&#xff0c;在二分类问题模型&#xff1a;例如逻辑回归「Logistic Regression」、神经网络「Neural Network」等&#xff0c;真实样本的标签为 [0&#xff0c;1]&#xff0c;分别表示负类和正类。模型的最后通常会经过一个 Sigmoid 函数&#xff0c;输出一个概率值&am…