导航栏自定义控件
来源:互联网 发布:mhp3数据库 编辑:程序博客网 时间:2024/05/17 04:51
每一个app都会有底部导航栏,那么就写一个自定义控件,每次用的时候,直接拿过来用就行了,不需要每次都要去写了
public class NavigationTabView extends LinearLayout { private ImageView iv_tab_icon; public TextView iv_tab_desc; public TextView tv_circle_count; public ImageView iv_red_point; private boolean isSelected; private Drawable navigation_icon_nomal; private Drawable navigation_icon_selected; private int navigation_name_nomal; private int navigation_name_selected; public NavigationTabView(Context context, AttributeSet attrs) { super(context, attrs); View.inflate(context, R.layout.layout_navigation_tab, this); iv_tab_icon = (ImageView) findViewById(R.id.iv_main_tab_icon); tv_circle_count = (TextView) findViewById(R.id.tv_circle_count); iv_red_point = (ImageView) findViewById(R.id.iv_red_point); iv_tab_desc = (TextView) findViewById(R.id.iv_main_tab_desc); TypedArray typeArray = context.obtainStyledAttributes(attrs, R.styleable.NavigationTabView); navigation_name_nomal = typeArray.getColor(R.styleable.NavigationTabView_navigation_name_nomal, Color.RED); navigation_name_selected = typeArray.getColor(R.styleable.NavigationTabView_navigation_name_selected, Color.RED); navigation_icon_nomal = typeArray.getDrawable(R.styleable.NavigationTabView_navigation_icon_nomal); navigation_icon_selected = typeArray.getDrawable(R.styleable.NavigationTabView_navigation_icon_selected); setSelected(false); typeArray.recycle(); this.setGravity(Gravity.CENTER_HORIZONTAL); } /** * 判断当前计数view是否显示 * * @return */ public boolean isShowCount() { return tv_circle_count.getVisibility() == VISIBLE; } /** * 设置当前view是否显示 * * @param isShowCount 是否显示 * @param num 显示的数量 */ public void setShowCount(boolean isShowCount, int num) { if (isShowCount) { tv_circle_count.setVisibility(View.VISIBLE); String numStr = String.valueOf(num); if (num > 99) { numStr = "99+"; } tv_circle_count.setText(numStr); } else { tv_circle_count.setVisibility(View.INVISIBLE); } } /** * 设置是否显示小红点 * * @param isShow 是否显示 */ public void setShowCountPoint(boolean isShow) { iv_red_point.setVisibility(isShow ? View.VISIBLE : View.INVISIBLE); } /** * 判断当前tab的状态 * * @return boolean 是否选中 */ public boolean isSelected() { return isSelected; } /** * 设置tab的状态 * * @param isSelected 是否选中 */ public void setSelected(boolean isSelected) { if (isSelected) { iv_tab_icon.setImageDrawable(navigation_icon_selected); iv_tab_desc.setTextColor(navigation_name_selected); } else { iv_tab_icon.setImageDrawable(navigation_icon_nomal); iv_tab_desc.setTextColor(navigation_name_nomal); } this.isSelected = isSelected; }}
把这个自定义控件放到布局中就行了,在布局中自定义button选中状态和未选中状态的标志即可
0 0
- 导航栏自定义控件
- Android自定义组合控件---简单导航栏
- Android自定义组合控件---简单导航栏
- android 自定义组合控件 顶部导航栏
- QT自定义控件之导航栏实现
- 自定义底部导航栏控件NavigationButton
- android 自定义导航控件
- 自定义滚动导航控件
- 自定义导航控件
- 自定义字母导航条控件
- android 自定义导航控件源码
- Android自定义控件---导航栏SlideTab(Fragment+ViewPager) 标签: android控件导航java
- Android自定义控件,可以滑动的导航栏(Navigation Bar)
- Android自定义控件---导航栏SlideTab(Fragment+ViewPager)
- 自定义控件-仿QQ导航栏-跟手指示条
- iOS 导航栏添加自定义的分段控件
- Android-自定义控件之组装控件(自定义导航)
- 自定义View之字母导航控件
- EAS 开发中,序时簿上,对某一字段的排序出现混乱的异常分析
- iOS应用开发视频教程笔记iPad Apps
- java常用算法之字梯(广度优先搜索bfs)
- 机房水题欢乐赛 20160216
- KVO键值监听
- 导航栏自定义控件
- object-c 入门基础篇
- PHP 设计模式之观察者模式
- 对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)
- 打印 java异常
- 复利计算程序
- DataGuard-RAC到单实例
- 安装samba实现共享文件夹时遇到的一些依赖关系问题(ubuntu1204)
- 听说在新的一年里你的证书过期了