你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> Android仿iOS7的UISegmentedControl 分段

Android仿iOS7的UISegmentedControl 分段

編輯:IOS開發綜合

 

這裡只簡單做了兩個按鈕的。

首先是兩個按鈕的背景:

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); } }

 

 

布局文件引用

 



   
	



 

 

 

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved