2011-01-31 8 views
9

Sto cercando di creare un toast come controllo basato su textview e ho trovato un comportamento molto strano di textview nel caso in cui abbia nove patch disegnabili come sfondo.Il riempimento di una finestra di testo con nove sfondi non ha effetto visivo

Questa è la definizione xml:

<by.pplware.view.QuickInfo 
    android:id="@+id/quickinfo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:padding="20px" 
    android:textSize="20px" 
    android:textStyle="bold" 
    android:typeface="serif" 
    android:background="#FFFF0000" 
/> 

questo è TextView con sfondo colorato: enter image description here

questo è TextView con sfondo drawable: enter image description here

a quanto mi risulta, in caso di ninepatch sfondo Android rende l'imbottitura trasparente e usa drawable solo come sfondo per il testo. Ma voglio includere il padding nell'area coperta con lo sfondo a nove caselle.

Esiste una soluzione per questo problema?

risposta

26

Prova uno di questi:

  1. Impostare la ninepatch sfondo tramite il "android: sfondo" proprietà XML invece di programatically; questo coopera con il padding definito da XML.
  2. Se è necessario impostare lo sfondo in modo programmatico, provare a reimpostare il padding dopo aver impostato lo sfondo (se si imposta il padding e si imposta lo sfondo, assumerei che il padding definito nel ninepatch stesso lo sovrascriva).
  3. Evita l'intero problema e imposta semplicemente le aree di imbottitura nell'immagine ninepatch stessa (ovvero le barre nere a destra e in basso).
+1

Grazie per i commenti - 1 e 2 aiuta davvero. –

+3

3 è meglio direi – kishu27

+1

Ho lavorato attorno a questo salvando i valori di padding prima di impostare la patch nove e quindi reimpostare il padding come sopra 2. –

Problemi correlati