博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android仿苹果分段按钮
阅读量:5113 次
发布时间:2019-06-13

本文共 4260 字,大约阅读时间需要 14 分钟。

 

 

这里只简单做了两个按钮的。

首先是两个按钮的背景:

res/drawable/seg_left.xml

 

 

 

res/drawable/seg_right.xml
 
字体颜色:

res/drawable/seg_text_color_selector.xml

这几个是对选中状态进行设置。

 

下面对LinearLayout进行改造~~~

其实就是放两个TextView。

SegmentView.java

package cn.haiwan.app.widget;import org.xmlpull.v1.XmlPullParser;import android.R.integer;import android.content.Context;import android.content.res.ColorStateList;import android.util.AttributeSet;import android.util.TypedValue;import android.view.Gravity;import android.view.View;import android.widget.LinearLayout;import android.widget.TextView;import cn.haiwan.R;public class SegmentView extends LinearLayout {	private TextView textView1;	private TextView textView2;	private onSegmentViewClickListener listener;	public SegmentView(Context context, AttributeSet attrs) {		super(context, attrs);		init();	}		public SegmentView(Context context) {		super(context);		init();	}	private void init() {//		this.setLayoutParams(new LinearLayout.LayoutParams(dp2Px(getContext(), 60), LinearLayout.LayoutParams.WRAP_CONTENT));		textView1 = new TextView(getContext());		textView2 = new TextView(getContext());		textView1.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1));		textView2.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1));		textView1.setText("SEG1");		textView2.setText("SEG2");		XmlPullParser xrp = getResources().getXml(R.drawable.seg_text_color_selector);  	    try {  	        ColorStateList csl = ColorStateList.createFromXml(getResources(), xrp);  	        textView1.setTextColor(csl);	        textView2.setTextColor(csl);	      } catch (Exception e) {  	    } 	    textView1.setGravity(Gravity.CENTER);	    textView2.setGravity(Gravity.CENTER);	    textView1.setPadding(3, 6, 3, 6);	    textView2.setPadding(3, 6, 3, 6);	    setSegmentTextSize(16);		textView1.setBackgroundResource(R.drawable.seg_left);		textView2.setBackgroundResource(R.drawable.seg_right);		textView1.setSelected(true);		this.removeAllViews();		this.addView(textView1);		this.addView(textView2);		this.invalidate();				textView1.setOnClickListener(new OnClickListener() {						@Override			public void onClick(View v) {				if (textView1.isSelected()) {					return;				}				textView1.setSelected(true);				textView2.setSelected(false);				if (listener != null) {					listener.onSegmentViewClick(textView1, 0);				}			}		});		textView2.setOnClickListener(new OnClickListener() {						@Override			public void onClick(View v) {				if (textView2.isSelected()) {					return;				}				textView2.setSelected(true);				textView1.setSelected(false);				if (listener != null) {					listener.onSegmentViewClick(textView2, 1);				}			}		});	}	/**	 * 设置字体大小 单位dip	 * 

2014年7月18日

* @param dp * @author RANDY.ZHANG */ public void setSegmentTextSize(int dp) { textView1.setTextSize(TypedValue.COMPLEX_UNIT_DIP, dp); textView2.setTextSize(TypedValue.COMPLEX_UNIT_DIP, dp); } private static int dp2Px(Context context, float dp) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dp * scale + 0.5f); } public void setOnSegmentViewClickListener(onSegmentViewClickListener listener) { this.listener = listener; } /** * 设置文字 *

2014年7月18日

* @param text * @param position * @author RANDY.ZHANG */ public void setSegmentText(CharSequence text,int position) { if (position == 0) { textView1.setText(text); } if (position == 1) { textView2.setText(text); } } public static interface onSegmentViewClickListener{ /** * *

2014年7月18日

* @param v * @param position 0-左边 1-右边 * @author RANDY.ZHANG */ public void onSegmentViewClick(View v,int position); }}

 

 

 

布局文件引用
 

查看更多andrid教程 , 请移步移步   

 

 

 

转载于:https://www.cnblogs.com/dasheny/p/4217694.html

你可能感兴趣的文章
包含列的索引:SQL Server索引的阶梯级别5
查看>>
myeclipse插件安装
查看>>
浙江省第十二届省赛 Beauty of Array(思维题)
查看>>
NOIP2013 提高组 Day1
查看>>
个人对vue生命周期的理解
查看>>
cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题
查看>>
存储(硬件方面的一些基本术语)
查看>>
观察者模式
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
Win磁盘MBR转换为GUID
查看>>
大家在做.NET B/S项目的时候多用什么设技术啊?
查看>>
Java SE和Java EE应用的性能调优
查看>>
Android设计模式系列--原型模式
查看>>
免费的论文查重网站
查看>>
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Eclipse相关集锦
查看>>