Italian Dimensione effettiva EditText

zakker

Member
Licensed User
Ciao a tutti, ho un piccolo "problema".

La mia necessità nasce dall'avere lo stesso stile di visualizzazione delle view nelle varie versioni di Android.
Nella fattispecie prendo come riferimento le EditText dove nelle versioni più obsolete di Android sono bianche con cornice, mentre dalla versione 4 in poi sono diverse.

Allora, stufo, ho pensato di sovrapporre alla EditText un Panel bianco, delle stesse misure della EditText (e stesse "coordinate"), in modo da avere, in qualsiasi versione android, la edit text (custom) sempre uguale...
E fino a quì tutto facile... ma perchè, seppur delle stesse dimensioni, Panel e EditText, la prima risulta più grande, visivamente parlando?

Quello che mi è venuto in mente è che la misura della edittext dichiarata non corriponde a quella dove effettivamente si può digitare il testo...

Allego un esempio così che possiate capire meglio cosa intendo dal mio discorso contorto.


EDIT1: Sto facendo altre prove e sembra che in realtà il panel sia della misura giusta...come la edittext a cui è applicato... E' l'altra edittext che in realtà è più piccola??? BOHHHH

EDIT2: Ho scoperto che è l'impostazione del Background ad "espandere" la EditText: come mai?
 

Attachments

  • EditText.zip
    7.3 KB · Views: 321
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Prova con:

B4X:
 EditText1.Color=Colors.White
EditText1.TextColor=Colors.Black

Oppure se vuoi i bordi arrotondati (20dip é il raggio):

B4X:
Dim cdb As ColorDrawable

cdb.Initialize(Colors.Black, 20dip)
EditTex1.Background = cdb

Sovrapporre un panel a EditText per avere la grafica che desideri è una soluzione sporca e senza senso, puoi ottenere qualunque grafica con la proprietà BackGround.

Gli oggetti non corrispondono mai in dimensioni non ci pedere tempo
 
Last edited:

MarcoRome

Expert
Licensed User
Longtime User
La risposta di @Star-Dust mi sembra sensata. Perchè complicarti la vita quando hai altre soluzioni ?
Puoi utilizzare anche:
B4X:
Dim scelta As ColorDrawable
    scelta.Initialize2(Colors.ARGB(255, 255,0,0), 5dip, 1dip, Colors.Black)
EditText1.Background = scelta

upload_2017-4-1_8-46-17.png

Dove il primo parametro è il colore di sfondo, il secondo il raggio dell'angolo ( se vuoi smussare lo stesso ), il terzo la profondità di un eventuale bordo, il colore del bordo.
 

Star-Dust

Expert
Licensed User
Longtime User
Se poi vuoi proprio mettere un panel, mettilo sotto EditText impostando lo sfondo in trasparenza.

B4X:
EditText.Color=Colors.Trasparent

Imposti il colore del testo di editText in modo che sia visibile sopra il Pannello.
Ipotizzando un colore del panel Nero o comunque scuro ....
B4X:
EditText.TextColor=Colors.White
 
Top