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的学习能对你有所帮助。
暂时没有评论,来抢沙发吧~