解析Android Widget中文API中TabWidget

网友投稿 240 2023-05-16

Android中文API中TabWidget的内容是本文要介绍的内容,主要是来了解并学习Android Widget 的应用及TabWidget的应用,具体内容的实现来看本文详解。

一、结构

复制publicclassTabWidgetextendsLinearLayout   implementsView.OnFocusChangeListener   java.lang.Object   android.view.View   android.view.ViewGroup   android.widget.LinearLayout   android.widget.TabWidget  1.2.3.4.5.6.7.8.9.10.11.12.13.

二、概述

显示选项卡标签的列表,用于代表父选项卡集合的每一页。当前widget的容器对象是TabHost。当用户选择一个选项卡时,此对象给父容器对象TabHost发送一个消息,告诉TabHost切换到对应的页面显示。此对象上的很多方法,你通常不会直接使用。容器TabHost被用来添加标签,添加并管理回调函数。你可能会调用此对象以迭代选项卡列表,或者调整选项卡列表的布局,但大多数方法应该是通过容器TabHost对象调用。

参见TabLayouttutorial。

三、XML属性

属性名称描述

android:divider可绘制对象,被绘制在选项卡窗口间充当分割物。

android:tabStripEnabled确定是否在选项卡绘制

android:tabStripLeft被用来绘制选项卡下面的分割线左边部分的可视化对象。

android:tabStripRight被用来绘制选项卡下面的分割线右边部分的可视化对象。

四、公共方法

复制publicvoidaddView(Viewchild)  1.

增加子视图。如果子视图没有设置布局参数,那么将为子视图设置此ViewGroup默认的布局参数。

参数

child新增的子视图

复制publicvoidchildDrawableStateChanged(Viewchild)  1.

如果调用addStatesFromChildren函数返回true,刷新此组的可视化对象的状态(包括它的子元素的状态)。

参数

child可视化对象状态被改变的子元素。

复制publicvoiddispatchDraw(Canvascanvas)  1.

绘制时调用此方法来绘制子视图。派生类在被绘制之前,为获取控制可能会重写此方法(但必须在它自己的视图已经被绘制之后)。

参数

canvas绘制视图的画布(canvas)

复制publicvoidfocusCurrentTab(intindex)  1.

设置当前选项卡并且让其获得焦点。此方法确保获取焦点的选项卡窗口匹配选中的窗口,一般情况下类似setCurrentTab(int)。通常当我们通过操作UI实现时,这些都不是问题,因为UI负责调用TabWidget.onFocusChanged(),但如果我们通过程序控制选中选项卡窗口,那么我们就必须确认保持焦点。(译者注:setCurrentTab(int)执行后,选中指定索引的选项卡窗口,但不获取焦点。focusCurrentTab(int)执行后,不仅通过调用setCurrentTab(int)选中指定索引的选项卡窗口还获取焦点。)

参数

index你想要设置焦点(橘色高亮)并且选中(选项卡被至于部件widget的前端)的选项卡。

参见

复制setCurrentTab(int)   publicViewgetChildTabViewAt(intindex)  1.2.

返回位于指定索引位置的选项卡标识符的视图

参数

index选项卡指示符视图返回的从零开始的索引

返回值

在提供的索引位置上的选项卡指示符视图

复制publicintgetTabCount()  1.

返回选项卡的数量

返回值

选项卡指示符视图的数量

复制publicbooleanisStripEnabled()  1.

指明选项卡指示符的底部分隔线是否绘制

复制publicvoidonFocusChange(Viewv,booleanhasFocus)  1.

当视图的焦点状态被改变时调用。

参数

v状态变化的视图

hasFocus视图的新焦点状态。

复制publicvoidsendAccessibilityEventUnchecked(AccessibilityEventevent)  1.

处理用于发送AccessibilityEvent的请求。如果再发送之前调度事件,本方法不保证可访问性检查。可以通过调用者调用isEnabled()检查。

参数

#p#

event事件

复制publicvoidsetCurrentTab(intindex)  1.

设置当前选项卡。此方法被用来将选项卡置于widget的前部,并且通知其它的UI元素,一个不同的选项卡被调整到了前台。注意,这不同于传统的“焦点”,是从视图逻辑的焦点。

例如,如果我们在选项卡式视图中有一个列表,一个用户可能会上下移动列表,通过列表选项移动UI焦点(橘色高亮)。光标的移动并不影响选项卡的选中状态,因为滚动是在同一个选项卡上的。选中的选项卡仅仅当我们在选项卡上切换时(在此例中,从列表视图移到下一选项卡视图)更改。如果想要一次性的设置焦点并选中选项卡,请使用setCurrentTab(int)。

正常情况下,视图逻辑关注调整焦点,除非你规避了UI,你可能仅仅将你的兴趣集中在这里。

参数

index你想要指做选中选项卡的选项卡索引(选项卡被显示到widget的前部)

参见

复制focusCurrentTab(int)   publicvoidsetDividerDrawable(Drawabledrawable)  1.2.3.

设置用于在选项窗口指示符间分隔的可绘制对象

参数

drawable用于分隔的可绘制对象

复制publicvoidsetDividerDrawable(intresId)  1.

设置用于在两个选项卡标识符之间进行分隔的可绘制对象

参数

resId被用来分隔的可绘制对象的资源标识

复制publicvoidsetEnabled(booleanenabled)  1.

设置当前视图的启用状态。子类的不同而其对应的启用状态的解释也不相同。

参数

enabled是否启动

复制publicvoidsetLeftStripDrawable(intresId)  1.

设置被用来当作选项卡指示符下面的分割线,左边部分的可绘制对象。

参数

resIdthe被用来当作左边分隔线的可绘制对象的资源标识符

复制publicvoidsetLeftStripDrawable(Drawabledrawable)  1.

设置被用来当作选项卡指示符下面的分割线,左边部分的可绘制对象。

参数

drawable左边分隔线的可绘制对象

复制publicvoidsetRightStripDrawable(intresId)  1.

设置被用来当作选项卡指示符下面的分割线,右边部分的可绘制对象。

参数

resId被用来当作右边分隔线的可绘制对象的资源标识符

复制publicvoidsetRightStripDrawable(Drawabledrawable)  1.

设置被用来当作选项卡指示符下面的分割线,右边部分的可绘制对象。

参数

drawable右边分隔线的可绘制对象

复制publicvoidsetStripEnabled(booleanstripEnabled)  1.

控制选项卡指示符底部的分隔线是否绘制。默认是绘制。如果用户为选项卡指示符指定一个定制的视图,那么TabHost类调用此方法以禁用绘制底部分割线。

参数

stripEnabled如果需要绘制底部分割线为true

#p#

五、受保护方法

复制protectedintgetChildDrawingOrder(intchildCount,inti)  1.

返回要绘制的子元素在当前迭代中的索引。如果你需要修改子元素的绘制顺序,可以覆写此方法。默认情况下返回参数i值。

注意:为使此方法被调用,你必须先通过调用setChildrenDrawingOrderEnabled(boolean)启用子元素排序

参数

i当前的迭代值

返回值

将要绘制的子元素在当前迭代的索引

复制protectedvoidonSizeChanged(intw,inth,intoldw,intoldh)  1.

布局过程中,当此视图的大小发生改变时被调用的。如果你只是添加到视图的层次结构,你调用时可以使用0当作之前的值(oldvalue)。

参数

w此视图的当前宽度

h此视图的当前高度

oldwOld此视图之前的宽度

oldh此视图之前的高度

示例代码

JAVA

复制public class TabDemo1 extends Activity implements OnClickListener {       TabHost mTabHost = null;       TabWidget mTabWidget = null;       Button btnVisiable, btnStrip;       @Override       protected void onCreate(Bundle savedInstanceState) {           // TODO Auto-generated method stub           super.onCreate(savedInstanceState);           setContentView(R.layout.tabdemo1);   mTabHost = (TabHost) findViewById(android.R.id.tabhost);           mTabHost.setup();   mTabWidget = mTabHost.getTabWidget();           mTabHost.addTab(mTabHost.newTabSpec("tab1").setContent(                   R.id.LinearLayout001).setIndicator("Tab1"));           mTabHost.addTab(mTabHost.newTabSpec("tab2").setContent(                   R.id.LinearLayout002).setIndicator("Tab2"));           mTabHost.addTab(mTabHost.newTabSpec("tab3").setContent(                   R.id.LinearLayout003).setIndicator("Tab3"));           // mTabHost.setCurrentTab(1);   btnVisiable = (Button) findViewById(R.id.btnVisiable);   btnStrip = (Button) findViewById(R.id.btnStrip);           btnVisiable.setOnClickListener(this);           btnStrip.setOnClickListener(this);           setTitle("共有" + mTabWidget.getTabCount() + "个tab");       }       @Override       public void onClick(View v) {           // TODO Auto-generated method stub           switch (v.getId()) {           case R.id.btnVisiable:               if (mTabWidget.getVisibility() != android.view.View.VISIBLE)                   mTabWidget.setVisibility(android.view.View.VISIBLE);               else                   mTabWidget.setVisibility(android.view.View.INVISIBLE);               break;           case R.id.btnStrip:               mTabWidget.setStripEnabled(!mTabWidget.isStripEnabled());               mTabWidget.setRightStripDrawable(android.R.color.transparent);               break;           default:               break;           }       }   1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.

XML

复制<?xmlversion="1.0"encoding="utf-8"?> <TabHostxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"android:layout_height="fill_parent" android:id="@android:id/tabhost"> <LinearLayoutandroid:layout_width="fill_parent" android:orientation="vertical"android:layout_height="fill_parent"> <TabWidgetandroid:id="@android:id/tabs" android:layout_width="fill_parent"android:layout_height="wrap_content"></TabWidget> <FrameLayoutandroid:id="@android:id/tabcontent" android:layout_height="wrap_content"android:layout_width="fill_parent"> <LinearLayoutandroid:id="@+id/LinearLayout001"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"> <Buttonandroid:id="@+id/btnVisiable"android:text="显示状态切换" android:layout_width="fill_parent"android:layout_height="wrap_content"></Button> <Buttonandroid:id="@+id/btnStrip"android:layout_width="fill_parent" android:layout_height="wrap_content"android:text="分隔线状态切换"></Button> <TextViewandroid:id="@+id/TextView1"android:layout_width="fill_parent" android:layout_height="wrap_content"android:text="小龙是好人!!!"></TextView> </LinearLayout> <LinearLayoutandroid:id="@+id/LinearLayout002" android:layout_width="fill_parent"android:layout_height="fill_parent"> <TextViewandroid:id="@+id/TextView2"android:layout_width="fill_parent" android:layout_height="wrap_content"android:text="小龙是坏蛋!"></TextView> </LinearLayout> <LinearLayoutandroid:id="@+id/LinearLayout003" android:layout_width="fill_parent"android:layout_height="fill_parent"> <TextViewandroid:id="@+id/TextView3"android:layout_width="fill_parent" android:layout_height="wrap_content"android:text="小龙还是坏蛋!"></TextView> </LinearLayout> </FrameLayout> </LinearLayout> </TabHost> 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.

小结:解析Android Widget中文API中TabWidget的内容介绍完了,希望通过Android Widget的学习能对你有所帮助。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:idea中创建maven的Javaweb工程并进行配置(图文教程)
下一篇:Spring Boot 之 RESRful API 权限控制
相关文章

 发表评论

暂时没有评论,来抢沙发吧~