velocidad tocar sirve qué quitar punto puntero poner para pantalla coordenadas como celular bolita blanco blanca blackberry

tocar - El cursor no aparece en Editfield en Blackberry



quitar coordenadas pantalla android (1)

Es un poco tonto que haya tanto trabajo solo para dibujar correctamente un fondo rectangular redondeado en un EditField , pero parece que otros también han tenido este problema

Solución uno

Si adapta la respuesta de Peter Strange a esa pregunta, su código podría parecerse al MobEditField publicado a continuación. EditField clase anónima EditField en una clase separada, ya que se agregó mucho código. Si realmente quieres, puedes mantener el código como una clase anónima (lo que creo que es realmente malo para la legibilidad).

private class MobEditField extends EditField { private boolean _drawFocus = false; public MobEditField() { super("", "", 11, EditField.NO_NEWLINE|EditField.FILTER_NUMERIC|EditField.FOCUSABLE); } protected void paint(Graphics graphics) { if (!_drawFocus) { int oldColor = graphics.getColor(); graphics.setColor(Color.WHITE); graphics.fillRoundRect(0, 0, getWidth() - (getWidth() / 10), getHeight(), 5, 5); graphics.setColor(Color.BLACK); graphics.drawText(getText(), 0, 0); graphics.setColor(oldColor); } super.paint(graphics); } protected void drawFocus(Graphics graphics, boolean on) { _drawFocus = on; super.drawFocus(graphics, on); _drawFocus = false; } protected void onFocus( int direction ) { super.onFocus( direction ); invalidate(); } protected void onUnfocus() { super.onUnfocus(); invalidate(); } }

entonces simplemente lo haces:

ef_mob = new MobEditField();

Toma nota de algunas cosas:

  1. No llame a ef_mob.getText() desde el método ef_mob.getText() de la clase anónima. Solo llame a getText() . No sé cómo compiló el código original.
  2. Lo mejor es que, al anular el método paint() , guarde el color inicial del objeto Graphics (o alfa, o lo que sea que cambie) y luego reinícielo al final.
  3. Los onFocus() y onUnfocus() se anulan para forzar el repintado
  4. El método paint() simplemente permite a super.paint() hacer todo el trabajo cuando el campo está enfocado. Dependiendo de cómo desee que se vea su campo, es posible que deba ajustarlo un poco.

Solución dos

Otra alternativa que funcionó para mí es aprovechar el método paintBackground() indocumentado que tiene EditField . Por supuesto, siempre hay inconvenientes en el uso de métodos no documentados. Entonces, lo ofrezco solo como una opción:

ef_mob = new EditField("", "", 11, EditField.NO_NEWLINE|EditField.FILTER_NUMERIC|EditField.FOCUSABLE) { protected void paint(Graphics graphics) { int oldColor = graphics.getColor(); graphics.setColor(Color.BLACK); graphics.drawText(getText(), 0, 0); graphics.setColor(oldColor); super.paint(graphics); } protected void paintBackground(Graphics g) { int oldColor = g.getColor(); g.setColor(Color.WHITE); g.fillRoundRect(0, 0, getWidth()-(getWidth()/10), getHeight(), 5, 5); g.setColor(oldColor); } };

Aquí, moví la llamada a fillRoundRect() de paint() y hacia paintBackground() .

El cursor no aparece en Editfield ..

Lo siguiente es el código ...

ef_mob = new EditField("", "", 11, EditField.NO_NEWLINE|EditField.FILTER_NUMERIC|EditField.FOCUSABLE) { protected void paint(Graphics graphics) { graphics.setColor(Color.WHITE); // graphics.drawRoundRect(0, 0, getWidth()-(getWidth()/10), getHeight(), 5, 5); graphics.fillRoundRect(0, 0, getWidth()-(getWidth()/10), getHeight(), 5, 5); graphics.setColor(Color.BLACK); graphics.drawText(ef_mob.getText(), 0, 0); super.paint(graphics); } };

¿Cuál es el problema?