Cómo tener una solución escalable de anchura basada en el ancho de la pantalla para una vista en android Relativa Diseño
-
21-12-2019 - |
Pregunta
En el Diseño de una actividad de mi aplicación para Android, necesito tener una línea con un texto alineado a la derecha de ella, como a continuación:
Y este es mi XML hasta el momento:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_centerVertical="true"
android:background="@android:color/darker_gray"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Text "
android:layout_alignRight="@id/line"/>
</RelativeLayout>
Básicamente el problema es que el ancho de la línea cambia de acuerdo al ancho de la pantalla y el ancho del texto.Debe ser el ancho de la pantalla, menos el ancho del texto.
En mi archivo XML, el ancho de la línea es igual a la anchura de la pantalla y el texto se superpone a la línea alineada a la derecha.Que no es lo que yo quería.Una idea es hacer que el fondo de mi texto equivalente para el fondo de la actividad.Sin embargo, no estoy seguro de si esta es la mejor idea.
Me pregunto si hay alguna otra manera de abordar este tipo de problemas en Android de diseño.
Solución
usted puede crear un layout_weight
y envolver su punto de vista y textView
en el interior de un linearlayout
para habilitar el uso de peso atributo
ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<View
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="3dp"
android:layout_gravity="center_vertical"
android:background="@android:color/darker_gray" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Text " />
</LinearLayout>
Otros consejos
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text=" Text " />
<View
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/textView1"
android:background="@android:color/darker_gray" />