android 自定义TabActivity的实例方法
一、改变Tab栏的位置。
java代码。在TabActivity的oncreate方法中添加
setContentView(R.layout.tab_host);
其中 Layout tab_host.xml 是从系统资源文件中抠出来之后略作修改。
系统原来的 tab_host.xml内容如下
<?xml version="1.0" encoding="utf-8"?>
<!--
/* //device/apps/common/assets/res/layout/tab_content.xml
**
** Copyright 2006, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost"
android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="match_parent" android:layout_height="match_parent">
<TabWidget android:id="@android:id/tabs" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_weight="0" />
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="match_parent" android:layout_height="0dip"
android:layout_weight="1"/>
</LinearLayout>
</TabHost>
要实现TAB栏在页面下方,只需简单修改。
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="0dip"
android:layout_weight="1"/>
<TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight="0" />
</LinearLayout>
</TabHost>
这样,就实现了TAB栏在页面下册。需要注意的是,view的id不要修改。
二、自定义TAB的图片。系统自带的tab_indicator.xml内容如下
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dip"
android:layout_height="64dip"
android:layout_weight="1"
android:layout_marginLeft="-3dip"
android:layout_marginRight="-3dip"
android:orientation="vertical"
android:background="@android:drawable/tab_indicator">
<ImageView android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
/>
<TextView android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
style="?android:attr/tabWidgetStyle"
/>
</RelativeLayout>
可以看出,默认情况下,图标在文字上方,并且不能占到整个格,无法满足设计需要。因此可以重写该Layout。
编写tab_in.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="64dip"
android:orientation="vertical"
>
</RelativeLayout>
View view1 = inflater.inflate(R.layout.tab_in, null);;
View view2 = inflater.inflate(R.layout.tab_in, null);;
View view3 = inflater.inflate(R.layout.tab_in, null);;
view1 .setBackgroundResource(R.drawable.record_upload_button_stateful);
view2 .setBackgroundResource(R.drawable.record_download_button_stateful);
view3 .setBackgroundResource(R.drawable.record_receive_button_stateful);
tabHost.addTab(tabHost
.newTabSpec("view1")
.setIndicator(view1)
);
tabHost.addTab(tabHost
.newTabSpec("view2")
.setIndicator(view2)
);
tabHost.addTab(tabHost
.newTabSpec("view3")
.setIndicator(view3)
);
- Android使用Theme自定义Activity进入退出动画的方法
- Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)
- Android实现将一个Activity设置成窗口样式的方法
- Android基础之Fragment与Activity交互详解
- Android的Activity跳转动画各种效果整理
- android的activity跳转到另一个activity
- Android Activity之间传递图片(Bitmap)的方法
- Android实现Activity界面切换添加动画特效的方法
- Android 多个Activity之间的传值
- Android实现可使用自定义透明Dialog样式的Activity完整实例
相关文章
Android中Fragmen首选项使用自定义的ListPreference的方法
Android中Fragmen的首选项可以使用自定义的ListPreference,这样Fragment的PreferenceFragment就可以更方便地保存配置信息,需要的朋友可以参考下2016-05-05android studio 一直卡在Gradle:Build Running的几种解决办法
这篇文章主要介绍了android studio 一直卡在Gradle:Build Running的解决办法,非常具有实用价值,需要的朋友可以参考下2017-10-10AndroidManifest.xml uses-feature功能详解
这篇文章主要介绍了AndroidManifest.xml uses-feature功能,较为详细的分析了Android属性过滤操作的功能与相关技巧,需要的朋友可以参考下2016-10-10
最新评论