lidkxx
¿Hay alguna manera de cambiar el relleno vertical o la altura del chip de material predeterminado? Desde el documentos Veo que seguramente hay una forma de establecer la altura mínima, pero me gustaría hacer chips “más delgados”, como en este diseño:
En las versiones 1.1.0-alpha* se agrega espacio adicional para el chip. Después de muchos golpes y pruebas, logré eliminar ese espacio usando:
app:chipMinTouchTargetSize="0dp"
Mirando el archivo de clase para Chip, parece que está relacionado con el tamaño de objetivo táctil mínimo de Android, así que considere eso antes de cambiar esto.
-
¡Gracias! Esto era tan molesto y desconcertante.
– Alex
6 de noviembre de 2019 a las 22:21
-
Además, se puede lograr este comportamiento llamando a setEnsureMinTouchTargetSize(false) en el chip mediante programación.
– Philipp Fahlteich
4 de febrero de 2020 a las 20:06
-
Es increíble cómo los creadores de Android pueden ocultar la configuración de márgenes bajo ese nombre. ¡Gracias!
– Juan de Armas
1 de marzo de 2020 a las 21:22
-
¡Muchas gracias! Después de buscar mucho, finalmente, su solución funcionó.
– MRamzan
29 de junio de 2020 a las 6:09
-
ACTUALIZACIÓN: solo se requiere app:chipMinHeight=”{size}” para cambiar el tamaño del chip.
– Asedio
19 de enero de 2021 a las 19:27
A continuación se muestran los atributos de chip para el relleno. Con suerte, puede ayudarte
acolchados
app:chipStartPadding
app:iconStartPadding
app:iconEndPadding
app:textStartPadding
app:textEndPadding
app:closeIconStartPadding
app:closeIconEndPadding
app:chipEndPadding
Para más información: haga clic aquí
-
Lo siento, probablemente no fui muy claro, estoy buscando algo en las líneas de textBottomPadding y textTopPadding O chipHeight 🙂 o algún truco sucio para lograrlo.
– lidkxx
7 de agosto de 2018 a las 10:15
-
Sería mejor personalizar su propio chip con la ayuda de drawable.
– Shahzad Afridi
7 de agosto de 2018 a las 10:20
-
sí, eso es lo que probablemente terminaré haciendo, solo quería asegurarme de que no me estoy perdiendo algo primero.
– lidkxx
7 de agosto de 2018 a las 10:21
-
Encontré esta biblioteca de terceros: código.hootsuite.com/…
– Shahzad Afridi
7 de agosto de 2018 a las 10:24
-
Si desea personalizar, eche un vistazo a este enlace: devexchanges.info/2017/01/…
– Shahzad Afridi
7 de agosto de 2018 a las 10:25
pgiecek
Para hacer un chip más delgado, debe ajustar dos propiedades: la altura del chip y el tamaño del texto.
<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>
Luego aplique el estilo como de costumbre.
<com.google.android.material.chip.Chip
style="@style/ThinnerChip"
...
/>
Esto eliminó los rellenos verticales predeterminados para mí:
app:ensureMinTouchTargetSize="false"
Puedes usar un estilo personalizado:
<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>
Y aplicarlo con:
<com.google.android.material.chip.Chip
style="@style/MaterialComponents_Chip_Thin"
.../>
-
chipMinTouchTargetSize
es lo que me faltaba. Gracias– Subhrajyoti Sen
9 de julio de 2020 a las 1:42
Viraj Patel
Tienes que establecer la altura de tu Chip para que sea “más delgado”.
Verifique el código a continuación:
build.gradle (aplicación)
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>
su_diseño.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>
Para obtener el chip más delgado, debo establecer las siguientes propiedades:
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
-
chipMinTouchTargetSize
es lo que me faltaba. Gracias– Subhrajyoti Sen
9 de julio de 2020 a las 1:42
Use setEnsureMinTouchTargetSize(false) para asegurarse de que el espacio sea mínimo.
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"
>
-
en mi caso, chip.setEnsureMinTouchTargetSize(false); es solución. ¡Gracias!
–Yoji Yamamoto
23 de septiembre a las 2:18