sociales redes mediatica informacion android android-layout android-drawable xml-drawable layer-list

android - redes - informacion mediatica



forma de Android con golpe inferior (11)

Necesito crear una forma de Android para que solo la parte inferior tenga un trazo (una línea punteada). Cuando intento lo siguiente, el trazo divide la forma en el centro. ¿Alguien sabe cómo hacerlo bien? el trazo debe ser la línea inferior / borde. Estoy usando la forma como fondo de un TextView. Por favor, no importa por qué lo necesito.

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <solid android:color="#1bd4f6" /> </shape> </item> <item> <shape android:shape="line" > <padding android:bottom="1dp" /> <stroke android:dashGap="10px" android:dashWidth="10px" android:width="1dp" android:color="#ababb2" /> </shape> </item> </layer-list>


Creo que no necesitas usar forma si te entendí.

Si está buscando como se muestra en la imagen siguiente, utilice el siguiente diseño.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:background="#1bd4f6" android:paddingBottom="4dp" > <TextView android:layout_width="200dp" android:layout_height="wrap_content" android:background="#ababb2" android:padding="5dp" android:text="Hello Android" /> </RelativeLayout> </RelativeLayout>

EDITAR

jugar con estas propiedades obtendrá el resultado

android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension"

prueba así

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <solid android:color="#1bd4f6" /> </shape> </item> <item android:top="20px" android:left="0px"> <shape android:shape="line" > <padding android:bottom="1dp" /> <stroke android:dashGap="10px" android:dashWidth="10px" android:width="1dp" android:color="#ababb2" /> </shape> </item> </layer-list>


Es un truco, pero creo que esta es probablemente la mejor manera de hacerlo. La línea punteada siempre estará en la parte inferior, independientemente de la altura.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" > <solid android:color="#1bd4f6" /> </shape> </item> <item android:top="-2dp" android:right="-2dp" android:left="-2dp"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:dashGap="10px" android:dashWidth="10px" android:width="1dp" android:color="#ababb2" /> </shape> </item> </layer-list>

Explicación:

La segunda forma es un rectángulo transparente con un contorno discontinuo. La clave para hacer que el borde solo aparezca en la parte inferior se encuentra en los márgenes negativos establecidos en los otros lados. Estos márgenes negativos "empujan" la línea punteada fuera del área dibujada en esos lados, dejando solo la línea en la parte inferior. Un efecto secundario potencial (que no he probado) es que, para vistas que se salen de sus propios límites, las fronteras del margen negativo pueden hacerse visibles.


Esto hace el truco ...

<item > <shape android:shape="rectangle"> <solid android:color="#YOUR_BOTTOM_LINE_COLOR"/> </shape> </item> <item android:bottom="1.5dp"> <shape android:shape="rectangle"> <solid android:color="#YOUR_BG_COLOR"/> </shape> </item>


Por lo general, para tareas similares: he creado una lista de capas dibujable como esta:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/underlineColor"/> </shape> </item> <item android:bottom="3dp"> <shape android:shape="rectangle"> <solid android:color="@color/buttonColor"/> </shape> </item>

La idea es que primero dibujes el rectángulo con underlineColor y luego, sobre este, dibujas otro rectángulo con el realColor pero aplicando bottomPadding. Siempre funciona

Pero cuando necesitaba que buttonColor fuera transparente, no podía usar el dibujo anterior. Encontré una solución más

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@android:color/transparent"/> </shape> </item> <item android:drawable="@drawable/white_box" android:gravity="bottom" android:height="2dp"/> </layer-list>

(como se puede ver aquí, mainButtonColor es transparente y white_box es simplemente un rectángulo dibujable con Solid blanco)


Pruebe el siguiente código dibujable xml:

<layer-list> <item android:top="-2dp" android:right="-2dp" android:left="-2dp"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:width="1dp" android:color="#fff" /> </shape> </item> </layer-list>


Siento que es sencillo, sin todos estos almohadones negativos o cigüeñas.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/main_bg_color"/> <item android:gravity="bottom"> <shape android:shape="rectangle"> <size android:height="5dp"/> <solid android:color="@color/bottom_bar_color"/> </shape> </item> </layer-list>


es Edittext completamente transparente con fondo transparente.

<item> <shape android:shape="rectangle" > <solid android:color="@color/transparent" /> </shape> </item> <item android:top="-3dp" android:right="-3dp" android:left="-3dp"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:width="2dp" android:color="@color/bottomline" /> </shape> </item>


usa este xml cambia el color con tu elección.

<item> <layer-list> <item> <shape> <solid android:color="@color/gray_500" /> </shape> </item> <!-- CONTENT LAYER --> <item android:bottom="2dp" > <shape> <solid android:color="#ffffff" /> </shape> </item> </layer-list> </item>


Esta respuesta es para aquellos buscadores de Google que quieran mostrar el borde inferior punteado de EditText como aquí

Crea dotted.xml dentro de la carpeta dotted.xml y pégalo

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="1dp" android:left="-2dp" android:right="-2dp" android:top="-2dp"> <shape android:shape="rectangle"> <stroke android:width="0.5dp" android:color="@android:color/black" /> <solid android:color="#ffffff" /> <stroke android:width="1dp" android:color="#030310" android:dashGap="5dp" android:dashWidth="5dp" /> <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" /> </shape> </item> </layer-list>

Luego, simplemente configure el atributo android:background en dotted.xml que acabamos de crear. Tu EditText ve así.

<EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Some Text" android:background="@drawable/dotted" />


Una solución simple:

Cree un archivo dibujable como edittext_stroke.xml en una carpeta dibujable . Agregue el siguiente código:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line" > <stroke android:width="1dp" android:color="@android:color/white" > </stroke> </shape>

En el archivo de diseño, agregue el drawable a edittext como

android: drawableBottom = "@ drawable / edittext_stroke"

<EditText android:textColor="@android:color/white" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableBottom="@drawable/edittext_stroke" />


<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="-6dp" android:left="-6dp" android:right="-6dp" android:bottom="0dp"> <shape android:shape="rectangle"> <solid android:color="#88FFFF00"/> <stroke android:width="5dp" android:color="#FF000000"/> </shape> </item> </layer-list>