2011-10-14 11 views
5

Sto usando Toast.makeText per visualizzare i risultati delle finestre di dialogo e un problema leggermente strano: il testo viene visualizzato sopra il fotogramma che dovrebbe contenere, come questo :Toast.makeText (...). Show() è a volte disallineato

Il messaggio non è allineato al frame. Si prega di allinearlo meglio. [_ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ ___]

sto in genere utilizzando il codice che sembra

Toast bread = Toast.makeText(getContext(), R.string.message, Toast.LENGTH_LONG); 
bread.show(); 

da una finestra di dialogo. Ho sentito che il contesto sbagliato a volte può causare problemi di inflazione ma getOwnerActivity() restituisce null, quindi è fuori. In ogni caso, avrei pensato che getContext() avrebbe fornito il contesto passato al momento della costruzione, che è comunque l'attività.

Qualche suggerimento?

+2

Provare a cambiare getContext() con getApplicationContext() ... –

risposta

20

si può provare questo:

Toast bread = Toast.makeText(getApplicationContext(), R.string.message, Toast.LENGTH_LONG); 
bread.show(); 
+0

Non disponibile all'interno della classe Dialog ma sarebbe 'getContext(). GetApplicationContext()' funziona? –

+0

Ha funzionato a meraviglia, grazie! –

+0

E 'stato scritto come commento di domanda prima di pubblicare questa risposta –

1

Se si crea il brindisi dall'interno di un attività che si dovrebbe usare: this o MyActivityName.this come parametro di contesto.

+0

Viene da una finestra di dialogo, ma grazie comunque. –

3
bread.setGravity(5,5,5); 

provare a giocare cambiando quei valori fino ad ottenere la posizione esatta.

Ma usando Gravity.CENTER ed altre costanti è il modo prefererrd ..

1

Provare a utilizzare,

<supports-screens 
    android:largeScreens="true" 
    android:normalScreens="true" 
    android:smallScreens="true" 
    android:anyDensity="true" /> 

nel file manifest.