1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chinasoft4_ohos-StackLabel

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

StackLabel

Проект

  • Проект: StackLabel.
  • Серия: openharmony, сторонние компоненты для адаптации.
  • Функция: компонент с «накладывающимися» метками, подходит для быстрого создания сценариев с накладывающимися метками, таких как «история поиска», «думаю, вам понравится» и т. д.
  • Состояние переноса проекта: основные функции реализованы.
  • Различия в вызовах: нет.
  • Версия разработки: SDK6, DevEco Studio 2.2 Beta2.
  • Базовая версия: master-ветка.

Демонстрация эффекта

Инструкция по установке

  1. В файле build.gradle в корневом каталоге проекта:
allprojects {
    repositories {
        maven {
            url 'https://s01.oss.sonatype.org/content/repositories/releases/'
        }
    }
}
  1. В файле build.gradle модуля entry:
 dependencies {
    implementation('com.gitee.chinasoft_ohos:StackLabel:1.0.0')
    ......  
 }

Проект можно запустить напрямую в SDK6 и DevEco Studio 2.2 Beta2. Если не запускается, удалите файлы .gradle, .idea, build, gradle, build.gradle и создайте новый проект на основе вашей версии. Скопируйте новые файлы проекта в корневой каталог.

Использование

  1. Создание через XML-файл макета:
 xmlns:app="http://schemas.huawei.com/hap/res-auto"
    <com.kongzue.stacklabelview.StackLabel
        ohos:id="$+id:stackLabelView"
        ohos:height="match_content"
        ohos:width="match_parent"
        app:deleteButton="false"
        app:deleteButtonImage="$media:img_delete"
        app:itemMargin="4vp"
        app:minSelectNum="2"
        app:paddingHorizontal="12vp"
        app:paddingVertical="8vp"
        app:selectTextColor="$color:colorAccent"
        app:textColor="#e6000000"
        app:textSize="12fp"
        />
    />

Описание поддерживаемых настраиваемых свойств:

Поле Значение Тип
app:textColor Цвет текста метки ColorInt
app:itemMargin Внешний отступ метки int (пиксели)
app:itemMarginHorizontal Горизонтальный внешний отступ метки int (пиксели)
app:itemMarginVertical Вертикальный внешний отступ метки int (пиксели)
app:paddingHorizontal Левый и правый внутренние отступы метки int (пиксели)
app:paddingVertical Верхний и нижний внутренние отступы метки int (пиксели)
app:deleteButton Отображать ли кнопку удаления по умолчанию boolean
app:textSize Размер шрифта метки int (пиксели)
app:deleteButtonImage Изображение кнопки удаления resId (идентификатор ресурса, например @mipmap/img_delete)
app:labelBackground Фон метки resId (идентификатор ресурса, например @mipmap/img_delete)
app:selectMode Переключатель режима выбора boolean
app:selectBackground Фон выбранной метки resId (идентификатор ресурса, например $graphic:rect_label_bkg_select_normal)
app:selectTextColor Цвет текста выбранной метки ColorInt
app:maxSelectNum Максимальное количество выбранных элементов int
app:minSelectNum Минимальное количество выбранных элементов int
app:maxLines Максимальное количество отображаемых строк int
  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("Ohos");
labels.add("开发");
stackLabelView.setLabels(labels);

Также можно использовать массив String:

stackLabelView.setLabels(new String[]{"花哪儿记账","给未来写封信","密码键盘","抬手唤醒"});

Чтобы реализовать функцию щелчка по метке, необходимо установить прослушиватель кликов:

stackLabelView.setOnLabelClickListener(new OnLabelClickListener() {
      @Override
      public void onClick(int index, Component v, String s) {
       new ToastDialog(MainAbilitySlice.this).setText( "点击了:" + s).show();
    }
});
  1. Режим удаления:

Вы можете использовать setDeleteButton(boolean), чтобы управлять переключателем режима удаления StackLabel:

stackLabelView.setDeleteButton(ture);

Когда режим удаления включен, нажатие на любую метку удалит эту метку:

stackLabelView.setOnLabelClickListener(new OnLabelClickListener() {
      @Override
      public void onClick(int index, Component v, String s) {
        if (stackLabelView.isDeleteButton()) {      //是否开启了删除模式
            //删除并 заново установить метки
            labels.remove(index);
            stackLabelView.setLabels(labels);
        } else {
            new ToastDialog(MainAbilitySlice.this).setText( "点击了:" + s).show();
        }
    }
});

Кроме того, вы также можете динамически удалять:

stackLabelView.remove(1);        //удалить первый элемент

stackLabelView.remove("标签2");   //удалить метку с именем «标签2»
  1. Режим выбора:

Режим выбора можно включить в XML-макете с помощью свойства app:selectMode="true":

app:selectMode="true"

Или из кода:

stackLabelView.setSelectMode(true);

Свойство maxSelectNum позволяет установить максимальное количество выбираемых элементов. Оно не действует, когда значение <=0. Если maxSelectNum = 1, это однократный выбор, и при выборе другого элемента ранее выбранный элемент автоматически отменяется. Если maxSelectNum > 1, то это множественный выбор, и вы не сможете выбрать больше элементов, чем maxSelectNum. maxSelectNum также можно установить или получить с помощью методов get/set в коде. Повторное нажатие на уже выбранный элемент отменит выбор. Набор выбранных меток можно получить следующим образом:

stackLabelView.setOnLabelClickListener(new OnLabelClickListener() {
      @Override
      public void onClick(int index, Component v, String s) {
          if (stackLabelView.isSelectMode()) {
            for (int i :
``` **Получение выбранного индекса**

stackLabelView.getSelectIndexList()) { //получение выбранного набора индексов, также можно получить массив с помощью stackLabelView.getSelectIndexArray() HiLog.info(hiLogLabel,">>>", "select: " + i); } } } });


**Кроме того, можно включить режим выбора и установить метки по умолчанию с помощью setSelectMode(boolean, List<String>)**

List selectLabels = new ArrayList<>(); selectLabels.add("Ohos"); selectLabels.add("Cutisan"); selectLabels.add("密码键盘"); stackLabelView.setSelectMode(isChecked, selectLabels);


Это основной процесс использования StackLabel.

5) **Использование метода StackLayout**

Добавьте компонент StackLayout, который наследуется от DependentLayout, чтобы реализовать упорядоченное расположение пользовательских макетов.

**Использование:**

<com.kongzue.stacklabelview.StackLayout ohos:height="match_content" ohos:width="match_parent" app:itemMargin="4vp">

<Text
    ohos:height="40vp"
    ohos:width="110vp"
    ohos:padding="10vp"
    ohos:text_alignment="center"
    ohos:background_element="#FFD4D4"
    ohos:text="文本1" />
<Text
    ohos:width="120vp"
    ohos:height=="40vp"
    ohos:padding="10vp"
    ohos:text_alignment="center"
    ohos:background_element="#FDFFB8"
    ohos:text="文本2" />
    
<!--子布局-->

</com.kongzue.stacklabelview.StackLayout>


В настоящее время поддерживается только настройка интервала между дочерними макетами с помощью свойства itemMargin.

## **Тестовая информация**

CodeCheck и CloudTest прошли тестирование без ошибок.

Вирусная проверка безопасности пройдена.

Текущая версия demo функционально не отличается от исходного компонента.

## **Версия итерация**
- 1.0.0

## **Информация о правах и лицензиях**

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.


Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Компонент свёрнутых тегов. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/chinasoft4_ohos-StackLabel.git
git@api.gitlife.ru:oschina-mirror/chinasoft4_ohos-StackLabel.git
oschina-mirror
chinasoft4_ohos-StackLabel
chinasoft4_ohos-StackLabel
master