1. 程式人生 > >Android 標籤控制元件

Android 標籤控制元件

轉載:http://blog.csdn.net/wangjinyu501/article/details/38089061

 在有的應用中可能需要設定一些標籤來方便用去去查詢某些資訊,比如手機助手或者購物軟體之類都會有一些標籤。對於軟體開發初期來說,直接使用TextView、Button實現是最為簡單的一種方式。但是這種方法也有其侷限性,比如不能控制換行、耦合性低等缺點。所以除了解決這些問題之外,最好能夠封裝一個類庫出來,方便以後使用。  首先新建一個Tag類,
  1. import java.io.Serializable;  
  2. public class Tag implements Serializable {  
  3.       /**  
  4.       *  
  5.       */  
  6.       private static final long serialVersionUID = 2684657309332033242L;  
  7.       private int backgroundResId ;  
  8.       private int id ;  
  9.       private boolean isChecked ;  
  10.       private int leftDrawableResId ;  
  11.       private int rightDrawableResId ;  
  12.       private String title;  
  13.       public Tag() {  
  14.      }  
  15.       public Tag( int paramInt, String paramString) {  
  16.            this .id = paramInt;  
  17.            this .title = paramString;  
  18.      }  
  19.       public int getBackgroundResId() {  
  20.            return this .backgroundResId ;  
  21.      }  
  22.       public int getId() {  
  23.            return this .id ;  
  24.      }  
  25.       public int getLeftDrawableResId() {  
  26.            return this .leftDrawableResId ;  
  27.      }  
  28.       public int getRightDrawableResId() {  
  29.            return this .rightDrawableResId ;  
  30.      }  
  31.       public String getTitle() {  
  32.            return this .title ;  
  33.      }  
  34.       public boolean isChecked() {  
  35.            return this .isChecked ;  
  36.      }  
  37.       public void setBackgroundResId( int paramInt) {  
  38.            this .backgroundResId = paramInt;  
  39.      }  
  40.       public void setChecked( boolean paramBoolean) {  
  41.            this .isChecked = paramBoolean;  
  42.      }  
  43.       public void setId(int paramInt) {  
  44.            this .id = paramInt;  
  45.      }  
  46.       public void setLeftDrawableResId( int paramInt) {  
  47.            this .leftDrawableResId = paramInt;  
  48.      }  
  49.       public void setRightDrawableResId( int paramInt) {  
  50.            this .rightDrawableResId = paramInt;  
  51.      }  
  52.       public void setTitle(String paramString) {  
  53.            this .title = paramString;  
  54.      }  
  55. }  
  這個類封裝了標籤檢視的背景圖片資源、id、是否check等。  然後新建TagView類,繼承自ToggleButton,
  1. import com.niceapp.lib.tagview.R;  
  2. import android.content.Context;  
  3. import android.util.AttributeSet;  
  4. import android.widget.ToggleButton;  
  5. public class TagView extends ToggleButton {  
  6.       private boolean mCheckEnable = true;  
  7.       public TagView(Context paramContext) {  
  8.            super (paramContext);  
  9.           init();  
  10.      }  
  11.       public TagView(Context paramContext, AttributeSet paramAttributeSet) {  
  12.            super (paramContext, paramAttributeSet);  
  13.           init();  
  14.      }  
  15.       public TagView(Context paramContext, AttributeSet paramAttributeSet,  
  16.                int paramInt) {  
  17.            super (paramContext, paramAttributeSet, 0);  
  18.           init();  
  19.      }  
  20.       private void init() {  
  21.           setTextOn( null );  
  22.           setTextOff( null );  
  23.           setText( "" );  
  24.           setBackgroundResource(R.drawable. tag_bg );  
  25.      }  
  26.       public void setCheckEnable( boolean paramBoolean) {  
  27.            this .mCheckEnable = paramBoolean;  
  28.            if (!this .mCheckEnable ) {  
  29.                super .setChecked( false);  
  30.           }  
  31.      }  
  32.       public void setChecked( boolean paramBoolean) {  
  33.            if (this .mCheckEnable ) {  
  34.                super .setChecked(paramBoolean);  
  35.           }  
  36.      }  
  37. }  
 這個TagView就是標籤檢視,標籤資訊由他來顯示。相應的xml檔案如下,tag.xml:
  1. <?xmlversion"1.0"encoding = "utf-8"?>
  2. <com.niceapp.lib.tagview.widget.TagViewxmlns:android ="http://schemas.android.com/apk/res/android"
  3.     android:layout_width"wrap_content"
  4.     android:layout_height"wrap_content"
  5.     android:drawablePadding"5.0dip"
  6.     android:minHeight"0.0dip"
  7.     android:paddingBottom"4.5dip"
  8.     android:paddingLeft"20.0dip"
  9.     android:paddingRight"20.0dip"
  10.     android:paddingTop"4.5dip"
  11.     android:textColor"#ff000000"
  12.     android:textSize"16.0sp"/>
顯示如下:  在github上有一個android-flowlayout控制元件,它是根據子檢視的大小來動態包裹檢視,如圖:
  因此,控制換行就可以利用這個控制元件去實現,無需重複發明輪子。android-flowlayout功能實現的類是FlowLayout,所以通過繼承這個類來完成標籤控制元件的實現。
  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3. import com.niceapp.lib.tagview.R;  
  4. import android.content.Context;  
  5. import android.util.AttributeSet;  
  6. import android.util.TypedValue;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.CompoundButton;  
  10. /**  
  11. * @author kince  
  12. *   
  13. */  
  14. public class TagListView extends FlowLayout implements OnClickListener {  
  15.      private boolean mIsDeleteMode;  
  16.      private OnTagCheckedChangedListener mOnTagCheckedChangedListener;  
  17.      private OnTagClickListener mOnTagClickListener;  
  18.      private int mTagViewBackgroundResId;  
  19.      private int mTagViewTextColorResId;  
  20.      private final List<Tag>mTags = new ArrayList<Tag>();  
  21.      /**  
  22.      * @param context  
  23. 相關推薦

    Android 標籤控制元件

    轉載:http://blog.csdn.net/wangjinyu501/article/details/38089061 在有的應用中可能需要設定一些標籤來方便用去去查詢某些資訊,比如手機助手或者購物軟體之類都會有一些標籤。對於軟體開發初期來說,直接使用TextView、B

    android商品屬性選擇標籤控制元件,可實現自動換行

    一、demo功能 在電商專案中,商品屬性選擇是必不可少的,而且屬性的數目和長度不是固定的,就有了 “標籤選擇”。以下我就借用了開源的AutoFlowLayout控制元件,根據商品屬性選擇要求寫了這個demo,和大家分享 二、程式碼介紹 1.功能 AutoFlo

    Android 自定義控制元件標籤控制元件

    一、首先這是效果 二、實現原理 通過繼承ViewGroup,然後在重寫 onMeasure測量每個View的寬度,重新onLayout控制每個控制元件的位置, 並新增點選事件 三、實現 1、在onMeasure方法中得到顯示方式,並得到寬高 int widt

    幾種Android表格控制元件

    一、LockTableView GitHub:https://github.com/RmondJone/LockTableView 有基本功能(顯示資料),有上拉下拉,有點選事件,但其它功能(如新增按鈕等)需要二次開發。   二、PanelList GitHub:https://

    MFC標籤控制元件 CTabCtrl

    CTabCtrl 標籤頁使用 引用 TabSheet.h .cpp 新增到專案中 拖入控制元件 tab ctrl 新增變數  型別 TabSheet型別 建立兩個 標籤頁  屬性 border 改為 none&nbs

    Android CardView控制元件

    相關文章 Android Snackbar控制元件 Android FloatingActionButton控制元件 Android Toolbar控制元件 Android AppBarLayout控制元件 Android CollapsingToolbarLayout控制元件 Andr

    Android ViewStub控制元件

    前言 使用ViewStub可以實現介面的延遲載入。 1. ViewStub簡單應用 (1) 佈局檔案 layout為載入View,inflatedId為載入後View的id。 <ViewStub android:id="@+id/view_stub"

    Android ViewPager控制元件

    前言 ViewPager可以實現多個介面的左右滑動。 1. ViewPager簡單應用 (1) 佈局檔案 <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:

    android高階控制元件介紹

    1. 高階控制元件與低階控制元件區別 高階控制元件需要介面卡 而低階不用 2. 介面卡種類  陣列介面卡 ArrayAdapter         new ArrayAdapter<String&

    Android學習(六)—— Android高階控制元件

    Android高階控制元件 1、ProgressBar 進度條,在執行耗時操作時來顯示,可以提高軟體的友好型。 常用屬性 android:max:進度條的最大值 android:progress:進度條已完成進度值 android:progressDrawable:設定軌道對應的Draw

    Android學習(五)—— Android初級控制元件

    Android初級控制元件 從今天開始就對Android進行正式的學習,首先先來學習一下初級的控制元件 1、TextView  文字框,用於顯示文字,不可編輯。 常用屬性 android:autoLink   設定是否當文字為URL連結/email/

    Android 基礎控制元件(二)

    ##7.ImageView ImageView直接繼承View,也是非常常用的一種檢視控制元件。 示例程式碼: <ImageView android:id="@+id/testImage" android:layout_width="100dp" a

    android 基礎控制元件————TextView

    TextView是View的直接子類。它是一個文字顯示控制元件,提供了基本的顯示文字的功能,並且是大部分UI控制元件的父類,因為大部分UI控制元件都需要展示資訊。 如果僅僅是展示文字,那麼TextView的作用就太小了,所以它還預定義了一些類似於HTML的標籤,通過這些標籤可以使TextView

    帶你徹底看懂React Native和Android原生控制元件之間的對映關係

    此文基於react natve的 September 2018 - revision 5 版本 本人學校畢業後就當了安卓爬坑專業戶,3年來總算爬習慣了,不料今年掉進了RN這個天坑,從此開始了我的悲慘人生。。。Anyway,RN的思想還是值得學習的,今天就從Android的角度開始分析一下react nati

    android高階控制元件(ListView) 列表控制元件

    在strings中建立一個strings.xml,並定義字串陣列,用於當資料來源 張三 李四 王五 張三丰 abc abb

    Android常用控制元件,用執行緒寫一個進度條。

    一、事件監聽(三種寫法) 1、標籤上直接繫結監聽方法       public void xxx(View view) 2、 建立監聽器物件,元件再繫結監聽器物件 2.1、匿名內部類 2.2、使用匿名內部類並定義成全域性的屬性 二、文字框(TextView) 1、T

    Android 高階控制元件

    一、ScrollView 二、ListView 三、自定義介面卡 BaseAdapter:是所有介面卡類的父類,可以對列表項進行最大限度的定製 自定義介面卡中的方法: getCount : 共有幾條資料 getView : 這個方法的作

    Android高階控制元件ListView

    BaseAdapter:是所有介面卡類的父類,可以對列表項進行最大限度的定製 1.1 自定義介面卡中的方法 getCount getView getItem getItemId 1.2 LayoutInflater(佈局解析器)

    Android常用控制元件

    Toast(吐絲框) 是Android中的一種簡易的訊息提示框 ImageView 注意事項:res下面的資源名不能使用大寫字母, 特別是圖片資源中的圖片的檔名, 會造成R.java檔案丟失,改正確後即

    Android控制元件AutoCompleteTextView的使用方法和一些屬性

    AutoCompleteTextView一些屬性 <!--completionThreshold:它的值決定了你在AutoCompleteTextView至少輸入幾個字元,它才會具有自動提示的功能--> <!--dropDownWidth設定提示框的寬度-