allprojects {
repositories {
maven {
url 'https://s01.oss.sonatype.org/content/repositories/releases/'
}
}
}
dependencies {
implementation('com.gitee.chinasoft_ohos:StackLabel:1.0.0')
......
}
Проект можно запустить напрямую в SDK6 и DevEco Studio 2.2 Beta2. Если не запускается, удалите файлы .gradle, .idea, build, gradle, build.gradle и создайте новый проект на основе вашей версии. Скопируйте новые файлы проекта в корневой каталог.
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 |
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();
}
});
Вы можете использовать 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»
Режим выбора можно включить в 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 )