import android.app.TabActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabSpec;
import android.widget.TabWidget;
import android.widget.TextView;
/**
* @Description:
* @ChangeList:
*/
public class MyTabActivity extends TabActivity {
private static final String TAG = "MyTabActivity";
private static final int TAB_HEIGHT = 40;
private TabHost tabHost;
private TabWidget tabWidget;
@Override
protected void onStart() {
Log.d(TAG, FileUtils.getMethodName());
super.onStart();
}
@Override
protected void onRestart() {
Log.d(TAG, FileUtils.getMethodName());
super.onRestart();
}
@Override
protected void onStop() {
Log.d(TAG, FileUtils.getMethodName());
super.onStop();
}
@Override
protected void onPause() {
Log.d(TAG, FileUtils.getMethodName());
super.onPause();
}
@Override
protected void onDestroy() {
Log.d(TAG, FileUtils.getMethodName());
super.onDestroy();
}
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(TAG, FileUtils.getMethodName());
super.onCreate(savedInstanceState);
setContentView(R.layout.index_tab);
tabHost = this.getTabHost();
tabHost.getTabWidget().setStripEnabled(false);
TabSpec ts1 = tabHost.newTabSpec("1");
ts1.setIndicator(getString(R.string.title_sdcard));
ts1.setContent(new Intent(this, A.class));
tabHost.addTab(ts1);
TabSpec ts2 = tabHost.newTabSpec("2");
ts2.setIndicator(getString(R.string.title_remote));
ts2.setContent(new Intent(this, B.class));
tabHost.addTab(ts2);
tabWidget = (TabWidget) findViewById(android.R.id.tabs);
for (int i = 0; i < tabWidget.getChildCount(); i++) {
View view = tabWidget.getChildAt(i);
view.setBackgroundDrawable(getResources().getDrawable(
R.drawable.grey));
view.getLayoutParams().height = TAB_HEIGHT;
TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(
android.R.id.title);
tv.setTextColor(Color.WHITE);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) tv
.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 0);
params.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
tv.setLayoutParams(params);
}
tabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
for (int i = 0; i < tabWidget.getChildCount(); i++) {
View v = tabWidget.getChildAt(i);
if (tabHost.getCurrentTab() == i) {
v.setBackgroundDrawable(getResources().getDrawable(
R.drawable.tab_bg1));
} else {
v.setBackgroundDrawable(getResources().getDrawable(
R.drawable.tab_bg2));
}
}
}
});
tabHost.setCurrentTab(0);
tabWidget.getChildAt(0).setBackgroundDrawable(
getResources().getDrawable(R.drawable.tab_bg1));
}
}
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabHost
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">
<TabWidget
android:id="@android:id/tabs"
android:background="@null"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</TabHost>
</LinearLayout>
以后补充...
分享到:
相关推荐
Android自定义Tab选项卡4行代码完成调用(Fragment+ViewPager组合) 此Demo博客地址:http://blog.csdn.net/u012814441/article/details/49720899
android自定义控件,实现选项卡功能。可通过自定义属性设置选项卡样式,且Tab的数目也可通过属性灵活设置,可设置为文本选项卡或图片选项卡,利用回调监听响应各Tab的点击事件,且设置方法和android原生控件设置点击...
`EasyTabs`库就是为了帮助开发者快速、简便地创建自定义选项卡控件而诞生的。它允许开发者以最少的代码量实现丰富的选项卡效果,提升应用的用户体验。本文将深入探讨`EasyTabs`的使用方法、特点以及如何将其集成到您...
Android Tablayout 自定义Tab布局的使用案例 Android Tablayout 是 Android 设计库中的一部分,主要用于实现标签页功能。Tablayout 中的 Tab 可以自定义布局,以满足不同的需求。本文将 introduction 了 Android ...
总结来说,Android自定义Tab选项卡功能涉及以下几个关键点: 1. 使用TabHost和TabWidget创建选项卡。 2. 通过TabSpec设置选项卡的标签、图标和内容。 3. 修改选项卡的外观,包括尺寸和颜色。 4. 可选地,使用反射...
在Android开发中,Tab选项卡是一种常见的用户界面设计,它允许用户通过切换不同的Tab来查看或操作不同的内容区域。在本资源"Android Tab 选项卡"中,开发者提供了一个使用`Fragment`实现的Tab切换示例,这对于我们...
在Android应用开发中,创建一个带有多个选项卡切换的效果是一个常见的需求,这通常涉及到用户界面(UI)的设计和用户体验(UX)的优化。本篇文章将详细介绍如何在Android中实现这样的功能,以创建一个包含多个选项卡...
总之,自定义`Fragment`选项卡是Android应用开发中的常见需求,通过`TabLayout`和`ViewPager`的结合,我们可以创建出各种各样的顶部导航效果。关键在于理解和利用好这两个组件的特性,以及适时地自定义样式和行为,...
在Android开发中,Tab选项卡控件是一种常见的用户界面组件,用于分割并展示大量内容,让用户可以在多个视图之间轻松切换。本教程将详细介绍如何在Android应用中实现一个简单的Tab选项卡控件。 首先,我们需要引入...
总的来说,实现Android Tab选项卡切换需要对`ViewPager`和`TabLayout`有深入的理解,同时掌握`Fragment`或`Activity`的使用。通过合理的布局设计和事件处理,我们可以创建出符合Android Material Design规范的、功能...
在Android开发中,"android Tab选项卡"是一个常见的用户界面元素,用于展示多个视图或功能区域,并且允许用户在这些区域之间轻松切换。通常,Tab选项卡的设计目的是提高用户体验,使得用户能快速访问和浏览应用程序...
在Android应用开发中,TabHost是一个非常重要的组件,它允许我们创建带有多个选项卡的应用界面。这个组件在早期的Android版本中广泛使用,为用户提供了一种便捷的方式来组织和切换不同的视图或活动。本文将深入探讨...
在Android开发中,TabHost是一个非常重要的组件,它允许开发者在一个Activity中创建多个Tab来展示不同的内容。本篇文章将深入探讨如何自定义TabHost样式,让应用界面更加美观且符合用户体验。 首先,我们需要理解...
在Android应用开发中,FragmentTab选项卡是一种常见的用户界面元素,用于展示多个相互关联的内容区域。MaterialTabs库是实现这种效果的一种方式,它为开发者提供了谷歌Material Design风格的选项卡。下面将详细介绍...
这个压缩包“安卓FragmentTab选项卡相关-android自定义中间带圆形按钮的底部导航控件.rar”似乎包含了一个定制化的底部导航条,该导航条在中间带有圆形按钮,这在许多现代移动应用中是流行的设计模式。 首先,...
在Android开发中,创建Tab选项卡效果是一种常见的需求,它能帮助用户在多个视图间进行切换,提高交互体验。ViewStub是一个轻量级的View,通常用于延迟加载布局,它在XML布局文件中占据几乎为0的内存空间,直到被 ...
此外,这种竖直选项卡还支持自定义tab样式,这对于品牌识别和用户体验的提升非常有帮助。开发者可以通过设置颜色、字体、图标等属性,使选项卡与应用的整体风格保持一致,提高用户的视觉舒适度和操作满意度。 自带...
本项目提供了两种不同的实现方式来创建TAB选项卡切换,使得开发者可以根据需求选择适合的方法。下面将详细介绍这两种方法。 1. 使用TabLayout + ViewPager TabLayout是Android Support Library中的组件,它与...
总的来说,"RadioButton实现底部带指示条的Tab选项卡"是一个结合了UI设计和事件处理的Android开发任务,涉及到RadioButton、RadioGroup、自定义样式、布局管理和用户交互等多方面的知识。通过这个项目,开发者不仅...