android实现对导航Tab设置下划线选中效果
来源:互联网 发布:网络语言cs是什么意思 编辑:程序博客网 时间:2024/06/05 20:25
技术人员核心竞争力还是技术啊。努力提高各种实现效果。加油哦!
直接看效果。此linearLayout只有两个Button ,当选中Button1,Button1有个下划线选中效果。当选中Buton2,Button2有个下划线选中效果。
如下图。
package com.daoge.ui;import roboguice.activity.RoboActivity;import roboguice.inject.InjectView;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.LinearLayout;import com.daoge.utils.DensityUtils;import com.daoge.utils.ResourceReader;import com.roboguicetest.R;public class MainActivity extends RoboActivity implements OnClickListener { @InjectView(R.id.btnTab001) Button btnTab001; @InjectView(R.id.btnTab002) Button btnTab002; @InjectView(R.id.layout_tab) LinearLayout layout_tab; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_layout); initAllViews(); } private void initAllViews() { btnTab001.setOnClickListener(this); btnTab002.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.btnTab001 : setTabSelected(btnTab001); break; case R.id.btnTab002 : setTabSelected(btnTab002); break; default : break; } } private void setTabSelected(Button btnSelected) { Drawable selectedDrawable = ResourceReader.readDrawable(this, R.drawable.shape_nav_indicator); int screenWidth = DensityUtils.getScreenSize(MainActivity.this)[0]; int right = screenWidth / 2; selectedDrawable.setBounds(0, 0, right, DensityUtils.dipTopx(this, 3)); btnSelected.setSelected(true); btnSelected.setCompoundDrawables(null, null, null, selectedDrawable); int size = layout_tab.getChildCount(); for (int i = 0; i < size; i++) { if (btnSelected.getId() != layout_tab.getChildAt(i).getId()) { layout_tab.getChildAt(i).setSelected(false); ((Button) layout_tab.getChildAt(i)).setCompoundDrawables(null, null, null, null); } } }}
最重要的地方在这里
private void setTabSelected(Button btnSelected) { Drawable selectedDrawable = ResourceReader.readDrawable(this, R.drawable.shape_nav_indicator); int screenWidth = DensityUtils.getScreenSize(MainActivity.this)[0]; int right = screenWidth / 2; selectedDrawable.setBounds(0, 0, right, DensityUtils.dipTopx(this, 3)); btnSelected.setSelected(true); btnSelected.setCompoundDrawables(null, null, null, selectedDrawable); int size = layout_tab.getChildCount(); for (int i = 0; i < size; i++) { if (btnSelected.getId() != layout_tab.getChildAt(i).getId()) { layout_tab.getChildAt(i).setSelected(false); ((Button) layout_tab.getChildAt(i)).setCompoundDrawables(null, null, null, null); } } }
得到这个Drawable,那么这个Drawable从哪里来呢??
R.drawable.shape_nav_indicator
看这个drawable.shape文件吧
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="@color/global_red" /> <size android:width="1000dp" /> <padding android:bottom="2dp" android:left="5dp" android:right="5dp" android:top="2dp" /></shape>
Demo下载地址:点击进入我的百度网盘下载
2 0
- android实现对导航Tab设置下划线选中效果
- android实现对导航Tab设置下划线选中效果
- Android 标题下划线 选中效果
- css导航栏选中是有移动下划线的效果
- android带彩色下划线的tab移动导航
- Android导航Tab栏实现
- RadioButton + selector实现Tab导航效果
- 设置导航栏下划线
- TextView + 背景设置, 产生自定义Tab选中效果
- android ActivityGroup实现Tab效果
- android实现tab切换效果
- Android ViewPager和Fragment实现顶部导航界面滑动效果、标签下的tab位置
- android textview 使用html实现下划线效果
- android 实现类似于textview下划线效果
- Android 实现下划线能滑动的Tab标签页
- Android入门之ActionBar实现Tab导航
- Android TabHost + RadioButton实现Tab导航栏
- Fragment、ViewPager、ActionBar实现TAB导航条效果
- 袁小伟博士“用户研究和产品创新”讲座有感
- SCALA 集合框架文档翻译-Concrete Mutable Collection Classes
- Android Activity 切换动画效果
- tomcat5.5的配置、性能优化
- [iPhone中级] iPhone团购信息客户端的开发 (三)
- android实现对导航Tab设置下划线选中效果
- IT运维服务中的一些工作思路探索(整理)
- (转载)linux命令之十六which命令
- Android中ViewPager使用FragmentPagerAdapter(底部圆点)
- 优化脚本执行时间
- SAP FI CO模块常用事务代码
- 使用java Runtime exec调用ping命令
- struts <hrml :errors>用法
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端二)