Come avere una larghezza scalabile in base alla larghezza dello schermo per una visualizzazione nel layout relativo Android
-
21-12-2019 - |
Domanda
Nel layout di un'attività della mia app Android, devo avere una riga con un testo allineato sul lato destro come di seguito:
E questo è il mio XML finora:
<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>
Fondamentalmente il problema è che la larghezza della linea viene modificata in base alla larghezza dello schermo e alla larghezza del testo.Dovrebbe essere la larghezza dello schermo meno la larghezza del testo.
Nel mio file XML, la larghezza della linea è uguale alla larghezza dello schermo e il testo si sovrappone alla linea allineata a destra.Il che non è quello che volevo.Un'idea è quella di rendere lo sfondo del mio testo equivalente allo sfondo dell'attività.Tuttavia, non sono sicuro che questa sia l'idea migliore.
Mi chiedo se esiste un altro modo per risolvere tali problemi nella progettazione Android.
Soluzione
puoi creare un file layout_weight
e avvolgi la tua vista e textView
all'interno di un linearlayout
per abilitare l'uso dell'attributo peso
campione:
<?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>
Altri suggerimenti
<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" />
.