4 votes

Redimensionnement de EditText sans raison

Observer un comportement assez étrange dans la disposition relative.

Voici l'état initial: entrer la description de l'image ici

Défini comme suit:

Sur onItemSelected du menu déroulant, il est modifié comme ceci:

abrSubmit.setText(pos == 1 ? "Calculer" : "Soumettre");
abrMult.setVisibility(pos == 1 ? View.VISIBLE : View.GONE);
bleedCount.setHint(pos == 1 ? "# de Meow/mois" : "# de Meow/an");

et devient ceci:
entrer la description de l'image ici

Remarquez comment EditText bleedCount est beaucoup plus grand sur la deuxième image. La valeur de bleedCount.getHeight() passe de 72 à 95, et je ne comprends pas ce qui en est la cause.

2voto

pawelzieba Points 10393

Il est lié à android:ems="10"
Lorsque EditText a changé sa largeur, après l'apparition de la vue avec x12, il aurait dû être divisé en deux lignes.

ems a une taille d'une lettre pour une police donnée.

Je pense que vous n'avez pas besoin de ems.
Définissez EditText comme une seule ligne : android:singleLine="true"

1voto

Joe Points 8976

Le redimensionnement de l'EditText bleedCount est dû au fait que votre texte d'indication devient plus long qu'une seule ligne lorsque (pos == 1).

Si vous commentez la ligne suivante dans votre code, le redimensionnement cessera de se produire :

// bleedCount.setHint(pos == 1 ? "# de Miaou/mois" : "# de Miaou/an");

Peut-être pouvez-vous le rendre plus court/petit pour éviter le redimensionnement ?

0voto

javaJoe Points 1279

D'accord, comme je n'ai pas l'intégralité de votre base de code, j'ai mis quelque chose de simple ensemble pour reproduire ce que vous faites. Juste pour info, j'utilise ICS 4.1. Je n'ai pas rencontré les problèmes que vous rencontrez, donc peut-être que c'est un problème d'API. Peut-être que vous pouvez regarder ma base de code et voir s'il y a des différences entre celle-ci et la vôtre. C'est peut-être là que se trouve la solution.

XML:

Code:

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 = { "Ceci", "Cela", "Autre" };

    // create the spinner adapter
    ArrayAdapter adapter = new ArrayAdapter(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("Calculer")) {
        submitButton.setText("Soumettre");
        tv.setVisibility(View.GONE);
    } else {
        submitButton.setText("Calculer");
        tv.setVisibility(View.VISIBLE);
    }

}

public void onNothingSelected(AdapterView arg0) {
    // TODO Auto-generated method stub
}
}

J'espère que ça vous aidera...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X