2014-11-25 5 views
12

Sembra un bug in 5 Android (API 21). Ho bisogno di una vista testuale sul pulsante, la visualizzazione del testo dovrebbe essere posizionata sopra il pulsante. Funziona correttamente su Android 4.1 (API 16) e non corretto su Android 5 (API 21). Ci sono Screenshots e il codice:Textview sul pulsante (sopra), non funziona in Android 5 (API 21)

Android 4.1 - E 'corretto, TextView rosso sopra il pulsante

Android 4.1

Android 5 - è errato, TextView rosso sotto il tasto!

Android 5

Codice:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/rlBottom" 
android:layout_width="fill_parent" 
android:layout_height="match_parent" > 



<FrameLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:background="#00FF00"> 

    <Button 
     android:id="@+id/bVio" 
     android:layout_width="wrap_content" 
     android:layout_height="50dip" 
     android:text="VIO"></Button> 

    <TextView 
     android:id="@+id/bVio_count" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="00" 
     android:textSize="12dip" 
     android:textColor="#FFFFFF" 
     android:background="@drawable/rounded_textbox"/> 

    </FrameLayout> 

</RelativeLayout> 

rounded_textbox - si tratta solo di forma ... se rimuovere lo sfondo, tutto sembra uguale, TextView sotto il pulsante in 5 Android.

Per favore, consiglio!

+0

http://bit.ly/1xYcyuy qui è un altro API screenshot 20 e API 21 - Quindi l'errore è solo in Android 5 –

+0

sembra loro di essere [BringToFront()] (http: //developer.android.com/reference/android/view/View.html#bringToFront()) per un 'View'. Puoi provarlo. –

+0

non funziona, l'ho provato. –

risposta

25

Sì. È grande in Android L (API 21). C'è una cosa nuova - Elevation, è qualcosa come z-index in HTML. Quindi per correggere questo bug devi usare android: elevation = "100dp" O android: translationZ = "100dip" per la vista che dovrebbe essere in cima. Quindi codice corretto è:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/rlBottom" 
android:layout_width="fill_parent" 
android:layout_height="match_parent" > 



<FrameLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:background="#00FF00"> 

    <Button 
     android:id="@+id/bVio" 
     android:layout_width="wrap_content" 
     android:layout_height="50dip" 
     android:text="VIO"></Button> 

    <TextView 
     android:id="@+id/bVio_count" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="00" 
     android:textSize="12dip" 
     android:textColor="#FFFFFF" 
     android:background="@drawable/rounded_textbox" 
     android:elevation="100dp"/> 

    </FrameLayout> 

</RelativeLayout> 
+2

android: translationZ = "100dip" non funziona e il valore di elevazione può essere qualsiasi cosa maggiore di "1dp" (ad es. Android: elevation = "2dp"). – Deepti

+0

Fare l'elevazione 2dp è un'idea sciocca dato che in stato pressato l'elevazione è maggiore quindi il riempimento TextView va sotto il pulsante –