EditText que cambia de tamaño sin ninguna razón

Observando un comportamiento bastante extraño en el diseño relativo.

Este es el estado inicial: Introduzca aquí la descripción de la imagen

Definido como:

<EditText android:id="@+id/bleedCount" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_toLeftOf="@+id/abrMult" android:layout_below="@+id/textView4" android:layout_marginRight="10dp" android:ems="10" android:inputType="number" > <requestFocus /> </EditText> <TextView android:id="@+id/abrMult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@+id/abrSubmit" android:layout_alignBaseline="@+id/abrSubmit" android:layout_marginRight="10dp" android:text="x12" /> <Button android:id="@+id/abrSubmit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView4" android:layout_alignParentRight="true" android:text="Calculate" /> 

En onItemSelected de la lista desplegable se está cambiando de esta manera:

 abrSubmit.setText(pos == 1 ? "Calculate" : "Submit"); abrMult.setVisibility(pos == 1 ? View.VISIBLE : View.GONE); bleedCount.setHint(pos == 1 ? "# of Meow/month" : "# of Meow/year"); 

Y se convierte en esto:
Introduzca aquí la descripción de la imagen

Observe cómo EditText bleedCount es mucho más alto en la segunda imagen. El valor de bleedCount.getHeight() está cambiando de 72 a 95, y no puedo entender lo que lo está causando.

El bleedCount Edit de bleedCount bleedCount se debe a que el texto de sugerencia se vuelve más largo que una sola línea cuando (pos == 1) .

Si comenta la siguiente línea en su código, el cambio de tamaño dejará de suceder:

 // bleedCount.setHint(pos == 1 ? "# of Meow/month" : "# of Meow/year"); 

Tal vez usted puede hacer más corto / más pequeño para evitar el cambio de tamaño?

Está conectado con android:ems="10"
Cuando EditText cambió su ancho, después de mostrar la vista con x12 , debe haber sido dividido en dos líneas.

ems tiene el tamaño de una letra para la fuente dada.

Creo que no necesitas el ems .
Establecer EditText como solo forrado: android:singleLine="true"

Bueno, ya que no tengo su base de código completa poner algo simple juntos para replicar lo que está haciendo. Sólo FYI, estoy usando ICS 4.1. No tuve ninguno de los problemas que está teniendo, así que tal vez este es un problema de la API. Tal vez usted puede mirar mi base de código y ver dónde hay diferencias entre él y el suyo propio. Allí puede estar la solución.

XML:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main_rl" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Top TextView" /> <Spinner android:layout_below="@+id/textView4" android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_below="@+id/spinner1" android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Above EditText" /> <EditText android:id="@+id/bleedCount" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView5" android:layout_marginRight="10dp" android:layout_toLeftOf="@+id/abrMult" android:ems="10" android:inputType="number" > </EditText> <TextView android:id="@+id/abrMult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView5" android:layout_alignBaseline="@+id/abrSubmit" android:layout_marginRight="10dp" android:layout_toLeftOf="@+id/abrSubmit" android:text="x12" android:visibility="gone" /> <Button android:id="@+id/abrSubmit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@+id/textView5" android:text="Submit" /> </RelativeLayout> 

Código:

 public class ExampleActivity extends Activity implements OnItemSelectedListener { private Button submitButton; private TextView tv; private Spinner spinner; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_example); submitButton = (Button) findViewById(R.id.abrSubmit); tv = (TextView) findViewById(R.id.abrMult); spinner = (Spinner) findViewById(R.id.spinner1); // create the data array for the spinner String[] strings = { "This", "That", "The Other" }; // create the spinner adapter ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, strings); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // set the adapter on the spinner spinner.setAdapter(adapter); // set the event listener for the spinner spinner.setOnItemSelectedListener(this); } public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if (submitButton.getText().equals("Calculate")) { submitButton.setText("Submit"); tv.setVisibility(View.GONE); } else { submitButton.setText("Calculate"); tv.setVisibility(View.VISIBLE); } } public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } } 

Espero eso ayude…

  • Necesito recuperar una instancia de una actividad
  • Cómo analizar con GSON cuando el identificador tiene espacio en el nombre
  • Android: Objeto personalizado en AIDL
  • Robotium: ¿Cómo espero que termine la carga antes de continuar?
  • cómo manejar el clic largo en Android
  • Los recursos no traducibles sólo deben definirse en los valores base / carpeta - Android Export APK
  • Cómo crear una devolución de llamada (agregar como argumento dinámico, una función)?
  • ¿Cómo extender la clase de URL para soportar otros protocolos en java (android)?
  • Llamar código Java desde c ++ en una aplicación de Android
  • Java 8 Stream API en Android N
  • ¿Cómo puedo convertir un archivo jar en formato apk?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.