2015-07-27 17 views
12

Voglio sovrapporre textview su imageview su Android che ho fatto programmaticamente. Voglio anche che l'immagine debba essere in grado di ingrandire e rimpicciolire anche io. Ma sono bloccato nel problema di posizionare il testo sull'immagine in modo tale che mentre ingrandisco l'immagine, il testo non dovrebbe ingrandire e dovrebbe rimanere nella stessa posizione sull'immagine non sullo schermo.Android ImageView Zoom con overlay di testo

+0

Hai provato ad aggiungere TextView come View a ImageView e ignorare i gesture-listener? –

+1

Controlla questo: http://stackoverflow.com/questions/14004424/android-zoomable-scrollable-imageview-withoverover?rq=1 – zed

+0

@TobiasK. cosa intendi con l'aggiunta di "aggiungi il TextView come visualizzazione per ImageView"? ImageView può avere elementi figlio? – techtinkerer

risposta

6

OK, ho creato un layout XML adatto alle vostre esigenze. Tutto quello che devi fare è ingrandire o rimpicciolire l'immagine.

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 

    xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="287dp" 
     android:layout_height="287dp" 

     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:text="Hello Constant Text Overlay" 

     android:layout_gravity="center_horizontal|center_vertical"/> 
     <!-- Don't want it centered? Then change the layout gravity to fit your needs --> 

</FrameLayout> 

Con questo, si può facilmente modificare la larghezza e l'altezza della ImageView e la TextView rimarrà nel centro senza ottenere grande o più piccolo.

Ho notato che avete preso una soluzione programmatica e potete facilmente vedere come viene fatto tramite XML e convertirlo in codice.

Ciò che è importante qui è che hai un contenitore intorno alla tua ImageView che avvolge il contenuto. Al suo interno si ha il ImageView di larghezza/altezza specificata e una TextView centrata orizzontalmente e verticalmente nel contenitore.

Ora puoi fare tutto ciò che vuoi fare con l'Immagine, il testo rimarrà intatto; solo rimarrà al centro

+0

Questo è un modo per andare se vuole il testo centrato, ma se vuole il testo in qualche altra posizione allora il commento di zed è un approccio eccellente. –

+0

Ho aggiunto un commento per spiegare come cambiare se da centrato. Ci sono una miriade di posizioni che la mia soluzione funziona correttamente. Anche questa è una delle soluzioni più semplici –

+0

Inoltre, se l'utente non lo desidera in una delle posizioni determinate da 'layout_gravity', può aggiungere ulteriori attributi come margini e tali –