Android仿iOS7的UISegmentedControl 分段

來源:互聯網
上載者:User

Android仿iOS7的UISegmentedControl 分段

 

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

首先是兩個按鈕的背景:

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() {@Overridepublic 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() {@Overridepublic 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); } }

 

 

布局檔案引用

 

   


 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.