`
hkp2008
  • 浏览: 112350 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Android 自定义选项卡按钮和选项卡位置

阅读更多

这是前段时间做的一个项目的一部分,我把它单独提取出来!效果如下图:

 

 

可以把选项卡放在一个Activity的任何位置,自定义了选项卡按钮的背景颜色!

 

basicview_tab.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"
    android:background="#852741"
    >
    	<!-- 导入别的xml文件 -->
	<include	layout="@layout/title_bar"/>
    <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"> 
   
      <TabWidget android:id="@android:id/tabs"  
      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="3" >  
         
      </FrameLayout>
      
       
    </LinearLayout>  
</TabHost>  
</LinearLayout>

 

自定义选项卡按钮  TabButton

 

 

public class TabButton extends LinearLayout {

	public TabButton(Context c, int drawable, String text) {
		super(c);
		LayoutInflater inflater = LayoutInflater.from(c);
		View view = inflater.inflate(R.layout.tab_button_layout, null);

		addView(view);

		TextView tv = (TextView)     view.findViewById(R.id.tab_button_text);

		ImageView iv = (ImageView) view.findViewById(R.id.tab_button_img);
		iv.setImageResource(drawable);
		tv.setText(text);
	}
}
 

 

布局 tab_button_layout.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="62dip"
    android:background="@drawable/tab_selector_bg"
    android:gravity="center"
    >
    <ImageView 
    	android:layout_width="240dip"
    	android:layout_height="wrap_content"
    	android:id="@+id/tab_button_img"
    	android:layout_gravity="center_horizontal"
    	/>
	<TextView  
	    android:layout_width="wrap_content" 
	    android:layout_height="wrap_content" 
	    android:id="@+id/tab_button_text"
	   	android:layout_gravity="center"
	   	android:textColor="#ffffff"
    />
</LinearLayout>
 

主界面代码 BasicViewTab

 

public class BasicViewTab extends TabActivity {

	private TabHost tabHost;
	private TextView textView;

	/* (non-Javadoc)
	 * @see android.app.ActivityGroup#onCreate(android.os.Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.basicview_tab);
		
		Intent intent = new Intent(BasicViewTab.this,TabExpenses.class);
		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		textView = (TextView)findViewById(R.id.tv_title_bar);
		textView.setText("Basic View Factor");
		
		tabHost = getTabHost(); 
		tabHost.addTab(tabHost.newTabSpec("tab1")
				.setIndicator(new TabButton(this,
						R.drawable.tabbar_icon_basic_expenses_selector,
						"Expenses"))
	        	.setContent(intent));
		tabHost.addTab(tabHost.newTabSpec("tab2")
				.setIndicator(new TabButton(this,
						R.drawable.tabbar_icon_basic_setting_selector,
						"Setting"))
	        	.setContent(new Intent(this, TabSetting.class)));

		tabHost.setCurrentTab(0);
		
		ImageView backHome = (ImageView) findViewById(R.id.btn_back_home);
		backHome.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				BasicViewTab.this.finish();
			}
		});
	}
}

 

 

附件里有完整代码!

 

分享到:
评论
6 楼 15164392341 2015-03-04  
文章和代码完全合不上
5 楼 mirzzzz 2014-10-10  
下载的东西什么玩意?!
4 楼 ixxoo 2012-08-30  
工程和效果完全不一致,请检查下吧
3 楼 wyyl1 2012-07-26  
附件里的代码和上面说的效果不一样啊,根本找不到BasicViewTab等类,请主楼上传一个对应的代码,谢谢!
2 楼 wenzhixin 2012-06-11  
谢谢分享,学习了
1 楼 nj_bing 2012-04-28  
    

相关推荐

    Android中使用View实现选项卡

    在实现自定义选项卡时,我们通常会继承自View或者更复杂的ViewGroup,如LinearLayout或RelativeLayout,来构建我们自己的选项卡视图。 1. **自定义View**: 为了创建选项卡,我们需要创建一个自定义的View类,扩展自...

    RadioGroup自定义选项卡样式

    通过研究并修改这个示例代码,你可以更好地理解RadioGroup自定义选项卡样式的实现过程,从而在你的应用程序中创造出更具特色的选项卡功能。记得在实际开发中,始终以用户体验为中心,使界面既美观又易于操作。

    安卓FragmentTab选项卡相关-android自定义中间带圆形按钮的底部导航控件.rar

    这个压缩包“安卓FragmentTab选项卡相关-android自定义中间带圆形按钮的底部导航控件.rar”似乎包含了一个定制化的底部导航条,该导航条在中间带有圆形按钮,这在许多现代移动应用中是流行的设计模式。 首先,...

    android底部选项卡

    2. **菜单资源(Menu Resource)**:底部选项卡的每个按钮对应一个菜单项,这些菜单项定义在XML文件(通常是`res/menu`目录下的文件)中,每个菜单项包含`id`、`title`和可选的图标。 3. **监听事件**:通过设置`...

    android仿微信底部选项卡(可滑动)

    5. **连接选项卡和ViewPager**:为了实现点击底部选项卡切换页面,需要监听选项卡按钮的点击事件,当按钮被点击时,调用`ViewPager`的`setCurrentItem(int item)`方法来切换到相应位置的页面。 6. **可滑动效果**:...

    android surfaceview自定义拍照 绘制头像轮廓

    4. 用户体验设计,如添加开始/停止预览的按钮,以及拍照后的确认和取消选项。 总的来说,"android surfaceview自定义拍照 绘制头像轮廓"是一个结合了Android视图系统、摄像头API、图像处理技术的项目。通过理解并...

    安卓Android源码——安卓Android ViewPager Fragment实现选项卡.zip

    如果需要自定义选项卡的显示,可以在适配器中重写 `getPageTitle()` 方法,或者在 TabLayout 中添加自定义的 Tab 标签。 7. **事件监听**: 为了响应用户在选项卡间的切换,可以为 TabLayout 添加 `...

    RadioButton实现底部带指示条的Tab选项卡三个和两个tab的都有

    总的来说,"RadioButton实现底部带指示条的Tab选项卡"是一个结合了UI设计和事件处理的Android开发任务,涉及到RadioButton、RadioGroup、自定义样式、布局管理和用户交互等多方面的知识。通过这个项目,开发者不仅...

    android自定义TabHost

    在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个选项卡的界面,每个选项卡可以展示不同的内容。在传统的TabHost使用中,我们通常只能使用系统预设的样式和颜色,但为了使应用更加个性化,开发者...

    Android 自定义dialog实现年龄选择输入.zip

    在某些情况下,自定义Dialog可能会被嵌入到一个带有选项卡切换的主界面中,使用`TabLayout`和`ViewPager`来实现。 综上所述,"Android 自定义dialog实现年龄选择输入"涉及到的核心技术包括自定义Dialog的创建、年龄...

    Android-TrapezoidPartsView-梯形控件

    在Android开发中,有时我们需要创建一些独特形状的视图,以实现特定的界面设计或交互效果。...通过研究其源码,我们可以学习到如何在Android中实现自定义视图的绘制和事件监听,进一步提升我们的Android开发技能。

    仿qqTab左右切换选项卡

    这个项目可能包含了如何创建和设置`TabLayout`、`ViewPager`,以及如何自定义选项卡样式的具体实现。 5. **优化与进阶** - **动态加载**:如果选项卡的数量或内容在运行时变化,需要动态添加或移除选项卡。 - **...

    安卓FragmentTab选项卡相关-仿微信TabHost.rar

    `FragmentTabHost`是Android SDK中的一个类,它是`TabHost`和`Fragment`的结合体,主要用在Android 3.0(API级别11)及以上版本,使得我们可以在每个选项卡中使用`Fragment`,而不是传统的`Activity`。这带来了更好...

    推选Android中使用选项卡、列表视图完成“休闲时分”应用的核心代码详解PPT资料.pptx

    在Android开发中,创建一个名为“休闲时分”的应用程序,通常涉及到使用选项卡(Tab)和列表视图(ListView)来构建用户界面。本讲解主要围绕如何利用这些组件实现特定功能,包括展示笑话和随机显示图片。 首先,...

    Android中使用Fragment实现底部选项卡的方案介绍.pdf

    总结,通过使用Fragment和FragmentTabHost,开发者能够在Android应用中轻松实现底部选项卡导航。这种方法提供了良好的可维护性和扩展性,可以根据需求添加或移除选项卡,同时也支持在不同设备和屏幕尺寸上保持一致的...

    巧妙运用ViewStub写出类似Tab选项卡

    在本主题“巧妙运用ViewStub写出类似Tab选项卡”中,我们将探讨如何利用ViewStub的特性来实现灵活、自定义的Tab选项卡效果。 首先,理解Tab选项卡在移动应用中的常见用途。通常,Tab 用于展示多视图内容,用户可以...

    用RadioGroup和ViewPager实现选项卡界面

    在Android应用开发中,创建一个用户友好的界面是至关重要的,而选项卡界面(Tab Layout)就是一个常见的设计模式,它能帮助用户轻松地在多个视图之间切换。本教程将介绍如何利用`RadioGroup`和`ViewPager`来实现这样...

    Android应用源码之ViewPager+Fragment侧滑选项卡,浏览器控件,两次退出.zip

    在源码中,可能会看到`TabLayout`与`ViewPager`的联动设置,如`TabLayout.setupWithViewPager()`,以及自定义选项卡的标题和图标。 4. **浏览器控件**: 在Android中,通常使用`WebView`组件来展示网页内容。`...

Global site tag (gtag.js) - Google Analytics