1. 程式人生 > >[Android]StackLabel - 一個很簡單的堆疊標籤

[Android]StackLabel - 一個很簡單的堆疊標籤

Kongzue StackLabel

Kongzue StackLabel 是堆疊標籤元件,適合快速完成需要堆疊標籤的場景,例如“搜尋歷史”、“猜你喜歡”等功能。

Github

github.com/kongzue/Sta…

Kongzue StackLabel Maven License Homepage

Demo預覽圖如下:

StackLabel

Demo下載地址:fir.im/stacklabel

優勢

  • 輕鬆易使用,快速建立,滿足絕大多數堆疊標籤使用場景。

使用方法

  1. 從 Maven 倉庫或 jCenter 引入: Maven倉庫:
<dependency>
  <groupId>com.kongzue.stacklabel</groupId>
  <artifactId>stacklabelview</artifactId>
  <version>1.1.0</version>
  <type
>pom</type> </dependency> 複製程式碼

Gradle: 在dependencies{}中新增引用:

implementation 'com.kongzue.stacklabel:stacklabelview:1.1.0'
複製程式碼
  1. 從XML佈局檔案建立:
<com.kongzue.stacklabelview.StackLabel xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/stackLabelView"
    android:layout_width="match_parent"
android:layout_height="120dp" app:textColor="#e6000000" app:itemMargin="4dp" app:paddingHorizontal="12dp" app:paddingVertical="8dp" app:deleteButton="false" app:textSize="12dp" /> 複製程式碼

其中支援的自定義屬性解釋如下:

欄位 含義 型別
app:textColor 標籤文字顏色 ColorInt
app:itemMargin 標籤外邊距 int(畫素)
app:paddingHorizontal 標籤內左右間距 int(畫素)
app:paddingVertical 標籤內上下間距 int(畫素)
app:deleteButton 預設是否顯示刪除按鈕 boolean
app:textSize 標籤文字字號 int(畫素)
app:deleteButtonImage 刪除圖示 resId(資源id,例如@mipmap/img_delete)
app:labelBackground Label背景圖 resId(資源id,例如@mipmap/img_delete)
  1. 新增內容:

StackLabel 目前僅支援純文字標籤表現,您可以將要顯示的 String 字串文字新增為 List 集合設定給 StackLabel,就會呈現想要的內容,範例如下:

labels = new ArrayList<>();
labels.add("花哪兒記賬");
labels.add("給未來寫封信");
labels.add("密碼鍵盤");
labels.add("擡手喚醒");
labels.add("Cutisan");
labels.add("記-專注創作");
labels.add("我也不知道我是誰");
labels.add("崩崩崩");
labels.add("Android");
labels.add("開發");
stackLabelView.setLabels(labels);
複製程式碼

要實現標籤點選,則需要設定點選監聽器:

stackLabelView.setOnLabelClickListener(new OnLabelClickListener() {
    @Override
    public void onClick(int index, View v, String s) {
        Toast.makeText(MainActivity.this, "點選了:" + s, Toast.LENGTH_SHORT).show();
    }
});
複製程式碼

您可以在程式碼中使用 setDeleteButton(boolean) 控制 StackLabel 刪除模式的開關:

stackLabelView.setDeleteButton(ture);
複製程式碼

當 DeleteButton 開啟時,點選任何標籤即應刪除該標籤:

stackLabelView.setOnLabelClickListener(new OnLabelClickListener() {
    @Override
    public void onClick(int index, View v, String s) {
        if (stackLabelView.isDeleteButton()) {
            //刪除並重新設定標籤
            labels.remove(index);
            stackLabelView.setLabels(labels);
        } else {
            Toast.makeText(MainActivity.this, "點選了:" + s, Toast.LENGTH_SHORT).show();
        }
    }
});
複製程式碼

以上,即 StackLabel 的基本使用流程。

開源協議

Copyright Kongzue StackLabel

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
複製程式碼

更新日誌

v1.1.0:

  • 新增屬性 deleteButtonImage 和 labelBackground 設定屬性;

v1.0:

  • 全新發布;