Benutzerdefinierte Höhe oder Polsterung für Android-Chips – Chipgruppenabstand

Lesezeit: 6 Minuten

Benutzeravatar von lidkxx
lidkxx

Gibt es eine Möglichkeit, die vertikale Polsterung oder Höhe des standardmäßigen Chipmaterials zu ändern? Von dem Dokumente Ich sehe, dass es sicherlich eine Möglichkeit gibt, die minimale Höhe einzustellen, aber ich möchte Chips “dünner” machen, wie in diesem Design:

Geben Sie hier die Bildbeschreibung ein

In den 1.1.0-Alpha*-Versionen werden zusätzliche Abstände für den Chip hinzugefügt. Nach vielen Treffern und Versuchen gelang es mir, diesen Abstand zu entfernen, indem ich Folgendes verwendete:

app:chipMinTouchTargetSize="0dp"

Wenn Sie sich die Klassendatei für Chip ansehen, scheint es, dass sie mit der minimalen Touch-Zielgröße von Android zusammenhängt, also denken Sie daran, bevor Sie dies ändern.

  • Vielen Dank! Das war so ärgerlich und verwirrend.

    – Alex

    6. November 2019 um 22:21 Uhr

  • Zusätzlich kann man dieses Verhalten erreichen, indem man setEnsureMinTouchTargetSize(false) programmatisch auf dem Chip aufruft.

    – Philipp Fahlteich

    4. Februar 2020 um 20:06 Uhr


  • Es ist unglaublich, wie Android-Entwickler die Randeinstellung unter einem solchen Namen verbergen können. Vielen Dank!

    – Jean d’Arme

    1. März 2020 um 21:22 Uhr

  • Danke vielmals! Nach langem Suchen hat Ihre Lösung schließlich funktioniert.

    – MRamzan

    29. Juni 2020 um 6:09 Uhr

  • UPDATE: nur app:chipMinHeight=”{size}” ist erforderlich, um die Größe des Chips zu ändern.

    – Belagerung

    19. Januar 2021 um 19:27 Uhr

Benutzeravatar von pgiecek
pgiecek

Um einen Chip dünner zu machen, müssen Sie zwei Eigenschaften anpassen: Chiphöhe und Textgröße.

<style name="ThinnerChip" parent="Widget.MaterialComponents.Chip.Action">
    <item name="chipCornerRadius">12dp</item>
    <item name="chipMinHeight">24dp</item>
    <item name="android:textAppearance">@style/SmallerText</item>
</style>

<style name="SmallerText" parent="TextAppearance.AppCompat.Small">
    <item name="android:textSize">11sp</item>
</style>

Wenden Sie dann den Stil wie gewohnt an.

<com.google.android.material.chip.Chip
    style="@style/ThinnerChip"
    ...
    />

Unten sind die Chip-Attribute zum Auffüllen. Hoffentlich kann es Ihnen helfen

Polsterungen

app:chipStartPadding
app:iconStartPadding
app:iconEndPadding
app:textStartPadding
app:textEndPadding
app:closeIconStartPadding
app:closeIconEndPadding
app:chipEndPadding

Für weitere Informationen: Klick hier

  • Entschuldigung, ich war wahrscheinlich nicht zu klar, ich suche nach etwas in den Zeilen textBottomPadding und textTopPadding ODER chipHeight 🙂 oder nach einem schmutzigen Hack, um es zu erreichen.

    – lidkxx

    7. August 2018 um 10:15 Uhr

  • Es wäre besser, Ihren eigenen Chip mit Hilfe von drawable anzupassen.

    – Shahzad Afridi

    7. August 2018 um 10:20 Uhr


  • Ja, das werde ich wahrscheinlich am Ende tun, wollte nur sichergehen, dass ich zuerst nichts verpasse.

    – lidkxx

    7. August 2018 um 10:21 Uhr

  • Ich habe diese Bibliothek von Drittanbietern gefunden: code.hootsuite.com/…

    – Shahzad Afridi

    7. August 2018 um 10:24 Uhr

  • Wenn Sie benutzerdefinierte machen möchten, dann werfen Sie einen Blick auf diesen Link: devexchanges.info/2017/01/…

    – Shahzad Afridi

    7. August 2018 um 10:25 Uhr

Dadurch wurden die standardmäßigen vertikalen Polsterungen für mich entfernt:

app:ensureMinTouchTargetSize="false"

Sie können einen benutzerdefinierten Stil verwenden:

  <style name="MaterialComponents_Chip_Thin" parent="@style/Widget.MaterialComponents.Chip.Entry">
    <item name="chipMinHeight">24dp</item>
    <item name="chipMinTouchTargetSize">24dp</item>
    <item name="chipIconSize">18dp</item>
    <item name="android:textAppearance">@style/TextAppearance.MaterialComponents.Body2_Thin</item>
    <item name="shapeAppearanceOverlay">@style/ShapeAppearanceOverlay.MaterialComponents.Chip_Thin</item>
  </style>
  <style name="ShapeAppearanceOverlay.MaterialComponents.Chip_Thin" parent="">
    <item name="cornerSize">12dp</item>
  </style>
  <style name="TextAppearance.MaterialComponents.Body2_Thin" parent="TextAppearance.MaterialComponents.Body2">
    <item name="android:textSize">12sp</item>
  </style>

Und wenden Sie es an mit:

    <com.google.android.material.chip.Chip
        style="@style/MaterialComponents_Chip_Thin"
        .../>

Geben Sie hier die Bildbeschreibung ein

  • chipMinTouchTargetSize ist das, was mir gefehlt hat. Vielen Dank

    – Subhrajyoti Sen

    9. Juli 2020 um 1:42 Uhr

Benutzeravatar von Viraj Patel
Viraj Patel

Sie müssen die Höhe Ihres Chips einstellen, um ihn “dünner” zu machen.
Überprüfen Sie den folgenden Code:

build.gradle (App)

implementation 'com.google.android.material:material:1.0.0-rc01'

ic_vector_android.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FFFFFF"
        android:pathData="M6,18c0,0.55 0.45,1 1,1h1v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L11,19h2v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L16,19h1c0.55,0 1,-0.45 1,-1L18,8L6,8v10zM3.5,8C2.67,8 2,8.67 2,9.5v7c0,0.83 0.67,1.5 1.5,1.5S5,17.33 5,16.5v-7C5,8.67 4.33,8 3.5,8zM20.5,8c-0.83,0 -1.5,0.67 -1.5,1.5v7c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5v-7c0,-0.83 -0.67,-1.5 -1.5,-1.5zM15.53,2.16l1.3,-1.3c0.2,-0.2 0.2,-0.51 0,-0.71 -0.2,-0.2 -0.51,-0.2 -0.71,0l-1.48,1.48C13.85,1.23 12.95,1 12,1c-0.96,0 -1.86,0.23 -2.66,0.63L7.85,0.15c-0.2,-0.2 -0.51,-0.2 -0.71,0 -0.2,0.2 -0.2,0.51 0,0.71l1.31,1.31C6.97,3.26 6,5.01 6,7h12c0,-1.99 -0.97,-3.75 -2.47,-4.84zM10,5L9,5L9,4h1v1zM15,5h-1L14,4h1v1z"/>
</vector>

ihr_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#e3e3e3"
    android:orientation="vertical"
    android:padding="20dp">

    <com.google.android.material.chip.ChipGroup
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:chipSpacing="18dp">

        <com.google.android.material.chip.Chip
            style="@style/Widget.MaterialComponents.Chip.Entry"
            android:layout_width="wrap_content"
            android:layout_height="20dp"
            android:checkable="false"
            android:text="KRAKOW"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
            android:textColor="#636161"
            app:chipCornerRadius="10dp"
            app:chipIcon="@drawable/ic_vector_android"
            app:chipIconSize="14dp"
            app:chipIconTint="#636161"
            app:chipStartPadding="8dp"
            app:chipStrokeColor="#636161"
            app:chipStrokeWidth="1dp"
            app:closeIconEnabled="false" />

        <com.google.android.material.chip.Chip
            style="@style/Widget.MaterialComponents.Chip.Entry"
            android:layout_width="wrap_content"
            android:layout_height="20dp"
            android:checkable="false"
            android:text="Today"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
            android:textColor="#ffffff"
            app:chipBackgroundColor="#636161"
            app:chipCornerRadius="10dp"
            app:closeIconEnabled="false" />

        <com.google.android.material.chip.Chip
            style="@style/Widget.MaterialComponents.Chip.Entry"
            android:layout_width="wrap_content"
            android:layout_height="20dp"
            android:checkable="false"
            android:text="Tomorrow"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
            android:textColor="#ffffff"
            app:chipBackgroundColor="#636161"
            app:chipCornerRadius="10dp"
            app:chipIcon="@drawable/ic_vector_android"
            app:chipIconSize="14dp"
            app:chipStartPadding="8dp"
            app:closeIconEnabled="false" />
    </com.google.android.material.chip.ChipGroup>
</LinearLayout>

Um den dünneren Chip zu bekommen muss ich folgende Eigenschaften setzen:

android:layout_height="20dp" // Thinner Height
app:chipIconSize="14dp"      // Smaller icon size
app:chipStartPadding="8dp"   // Add padding to start of icon
app:chipCornerRadius="10dp"  // Set Corner radius

Vorschau
Geben Sie hier die Bildbeschreibung ein

  • chipMinTouchTargetSize ist das, was mir gefehlt hat. Vielen Dank

    – Subhrajyoti Sen

    9. Juli 2020 um 1:42 Uhr

Verwenden Sie setEnsureMinTouchTargetSize(false), um sicherzustellen, dass der Abstand minimal ist.

Chip chip = new Chip(getContext());
    chip.setId(selectedWordGroup.id);
    chip.setText(selectedWordGroup.getName());
    chip.setTag(i);
    chip.setCheckable(true);
    chip.setCheckedIconVisible(false);
    chip.setChecked((mFlashcardSetupActivity.allWordGroups.get(i).getSelected()));
    chip.setClickable(true);
    chip.setFocusable(true);
    chip.setEnsureMinTouchTargetSize(false);
    chip.setChipDrawable(ChipDrawable.createFromAttributes(getContext(), null, 0, R.style.CustomChipChoice));

    chip.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean selected) {
        }
    });
    mChipGroupGroups.addView(chip);




<com.google.android.material.chip.ChipGroup
                    android:id="@+id/chip_group_groups"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:padding="4dp"
                    card_view:chipSpacing="4dp"
                >

  • in meinem Fall chip.setEnsureMinTouchTargetSize (false); ist Lösung. Vielen Dank!

    – Yoji Yamamoto

    23. September um 2:18


1435900cookie-checkBenutzerdefinierte Höhe oder Polsterung für Android-Chips – Chipgruppenabstand

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy