Codename One - Android Элементы управления материальным чипом в простой компоновке (или эквивалентной) - PullRequest
1 голос
/ 13 июля 2020

Приложение My Codename One должно содержать что-то вроде Android Элементы управления чипом или эквивалентные.

Они используются в двух местах, а макет:

- для первого места

<com.google.android.material.chip.ChipGroup android:id="@+id/chip_group" android:layout_width="wrap_content" android:layout_height="wrap_content">
<com.google.android.material.chip.Chip android:text="@string/first_chip_title" android:id="@+id/first_chip" android:layout_width="match_parent" android:layout_height="wrap_content" app:closeIconEnabled="false"/>
<com.google.android.material.chip.Chip android:text="@string/second_chip_title" android:id="@+id/second_chip" android:layout_width="match_parent" android:layout_height="wrap_content" app:closeIconEnabled="false"/>
...
...
</com.google.android.material.chip.ChipGroup>

- для второго места

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/chip_list" 
...
...
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="0dp" android:layout_marginRight="0dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"  tools:listitem="@layout/content"/>
</LinearLayout>

где содержимое (это элемент RecyclerView):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" 
android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content">
<com.google.android.material.chip.Chip android:id="@+id/chip_element" android:layout_width="wrap_content" android:layout_height="wrap_content" app:closeIconEnabled="false" android:textAllCaps="false" android:layout_gravity="center_vertical" style="@style/Widget.MaterialComponents.Chip.Filter" android:layout_weight="1" />
</LinearLayout>

(включены некоторые параметры макета поскольку они есть в коде, хотя здесь они не важны)

вот эффективный макет (пример для второго типа макета, первый - просто более простая версия): Изображение расположения микросхем

Что может быть эквивалентом в Codename One?

1 Ответ

0 голосов
/ 15 июля 2020

Потоковый макет довольно легко разбивает линии. Это макет по умолчанию для Container. Я могу довольно легко создавать подобные вещи с помощью ярлыков или кнопок. Обратите внимание, что я не использовал здесь UIID, которые вам нужно использовать для добавления полей / отступов, чтобы чипы более отличались друг от друга:

    Container chips = new Container();
    // note you can use Button to make them clickable and UIID to style
    // them any way you want
    chips.add(new Label("a very long label for a chip"));
    
    // I can check the chip manually
    Label checked = new Label("another label");
    checked.setMaterialIcon(FontImage.MATERIAL_CHECK);
    checked.setTextPosition(RIGHT);
    checked.getAllStyles().setBorder(RoundBorder.create()
            .rectangle(true)
            .color(0xaaaaaa));
    chips.add(checked);
    chips.add(new Label("chip label 2"));
    chips.add(new Label("chip label 3"));
    chips.add(new Label("chip label 4"));
    chips.add(new Label("chip label 5"));
    chips.add(new Label("short label"));
    chips.add(new Label("very long label for chip"));
    hi.add(chips);

введите описание изображения здесь

...