Immagine non mostra nell'interfaccia utente
-
27-10-2019 - |
Domanda
Ho un'immagine nelle 3 cartelle Res/Drawable-HDPI/MDPI/LDPI 600*600 come risoluzione) e ho questo file XML per mostrare un TextView e l'immagine:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/sipLabel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<ImageView android:id="@+id/connected" android:src="@drawable/connected" android:layout_below="@id/sipLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_weight="0.35" android:gravity="center"
/>
</LinearLayout>
Cosa potrebbe essere il problema? Grazie per l'aiuto.
Soluzione
Il problema principale è il tuo primo tag in LinearLayout
:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/sipLabel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
Da layout_height
è impostato per fill_parent
Questo TextView sta riempiendo il linearlayout in verticale, non lasciando spazio all'immagine. Prova a cambiare layout_height
a wrap_content
.
Inoltre, un paio di altre cose:
- Stai usando
android:layout_below="@id/sipLabel"
, ma questo funziona solo in un relativeyout. Quindi questo attributo viene silenziosamente ignorato. - Mentre puoi sceglierne qualsiasi
layout_weight
tu vuoi,0.35
è piuttosto arbitrario. Dal momento che è l'unico bambino nella Linearlayout con peso, riceverà tutto lo spazio verticale extra. - Non è necessario includere il
xmlns:android="http://schemas.android.com/apk/res/android"
Sul tuo tag TextView.
Altri suggerimenti
Penso layout_below
si applica solo per le relativeyout. Anche questo layout_weight="0.35"
Sembra potente sospetto, non penso che significhi ciò che pensi significhi. Penso che debba avere un valore intero.
Dal tuo TextView
ha un'altezza di fill-parent
, e il LinearLayout
non sta scorrendo (a meno che non venga inserito in un ScrollView
Non puoi vedere le parti inferiori), il tuo TextView
riprende l'intero schermo dell'attività e il ImageView
Essere sotto di esso non è visibile.
Quindi puoi
- Metti tutto il tuo
LinearLayout
in unScrollView
, e scorrere verso il basso per vedere la tua immagine, o - Se il tuo obiettivo è mostrare l'immagine nella parte inferiore dello schermo e l'intero posto sopra dovrebbe essere preso il
TextView
, quindi un relativeyout sarebbe l'opzione migliore.
Aggiornare
un lavoro RelativeLayout
L'anima sarebbe
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView android:id="@+id/sipLabel" android:text="@string/loremipsum1"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_alignParentTop="true" />
<ImageView android:id="@+id/connected" android:src="@drawable/connected"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/sipLabel" android:layout_alignParentBottom="true" />
</RelativeLayout>