android default keyboard layout -


i'm developing app nexus 7, , need edittext show keyboard view numbers , special characters. know can set layout edittext inputtype, problem if set inputtype="number" dialpad appears , not possible switch characters view. need (is customer's request) open keyboard layout shown when click on key "123" in bottom left. i've tried combinations of setrawinputtype , setinputtype no luck. combination shows dialpad

txtlinecode.setinputtype(inputtype.type_class_text); txtlinecode.setrawinputtype(inputtype.type_class_number); 

this combination shows dialpad too

txtlinecode.setinputtype(inputtype.type_class_text); txtlinecode.setrawinputtype(inputtype.type_number_variation_normal|inputtype.type_class_number); 

here screenshots better explain need

this default keyboard

this default keyboard

this layout shown when click on "?123" , need show default this layout shown when click on "?123"

this layout shown if set inputtype="number", not allow switch lecters layout enter image description here

by moment edittext prevalently numbers, should contains numbers, can do?

many thanks

i think found quite elegant solution: i've used drawable in textbox (in case drawableright), , i've assigned click listener on drawable executes switch between numeric , text mode. i'm able assign listener on drawable using little trick taken handling click events on drawable within edittext :

public class myedittextextends edittext {      private drawable drawableright;     private drawable drawableleft;     private drawable drawabletop;     private drawable drawablebottom;   //your stuff here  @override     public void setcompounddrawables(drawable left, drawable top, drawable right, drawable bottom) {         if (right != null) {             drawableright = right;         }          if (left != null) {             drawableleft = left;         }         super.setcompounddrawables(left, top, right, bottom);     } view.onclicklistener _leftdrawableclicklistener = null; view.onclicklistener _rightdrawableclicklistener = null;  public void setleftdrawableclicklistener(view.onclicklistener clicklistener) {     _leftdrawableclicklistener = clicklistener; }  public void setrightdrawableclicklistener(view.onclicklistener clicklistener) {     _rightdrawableclicklistener = clicklistener; }  @override     public boolean ontouchevent(motionevent event) {          if (event.getaction() == motionevent.action_down) {             int x, y;             rect bounds;             x = (int) event.getx();             y = (int) event.gety();             // works left since container shares 0,0 origin bounds             if (drawableleft != null) {                 bounds = drawableleft.getbounds();                 if (bounds.contains(x - fuzz, y - fuzz)) {                     try {                         _leftdrawableclicklistener.onclick(this);                     } catch (exception e) {                     }                     if (consumeevent) {                         event.setaction(motionevent.action_cancel);                         return false;                     }                 }             } else if (drawableright != null) {                 bounds = drawableright.getbounds();                 if (x >= (this.getright() - bounds.width() - fuzz) && x <= (this.getright() - this.getpaddingright() + fuzz) && y >= (this.getpaddingtop() - fuzz) && y <= (this.getheight() - this.getpaddingbottom()) + fuzz) {                      try {                         _rightdrawableclicklistener.onclick(this);                     } catch (exception e) {                     }                     if (consumeevent) {                         event.setaction(motionevent.action_cancel);                         return false;                     }                 }             } else if (drawabletop != null) {                 // not implemented yet             } else if (drawablebottom != null) {                 // not implemented yet             }         }          return super.ontouchevent(event);     }   @override     protected void finalize() throws throwable {         drawableright = null;         drawablebottom = null;         drawableleft = null;         drawabletop = null;         super.finalize();     }  } 

once custom edittext has been created, used code in activity

myedittext = (edittext) findviewbyid(r.id.myedittext);         myedittext.setrightdrawableclicklistener(new onclicklistener() {              @override             public void onclick(view v) {                 if (myedittext.getinputtype() != inputtype.type_class_text) {                     myedittext.setinputtype(inputtype.type_class_text);                     myedittext.setrawinputtype(inputtype.type_class_text);                     myedittext.setcompounddrawableswithintrinsicbounds(0, 0, r.drawable.keyboard_123, 0);                  } else {                     myedittext.setrawinputtype(inputtype.type_class_number);                     myedittext.setinputtype(inputtype.type_class_number);                     myedittext.setcompounddrawableswithintrinsicbounds(0, 0, r.drawable.keyboard_abc, 0);                 }              }         }); 

this result: when edittext first shown appears this

enter image description here

and clicking on "abc" image becomes this

enter image description here

hope can someone


Comments

Popular posts from this blog

curl - PHP fsockopen help required -

HTTP/1.0 407 Proxy Authentication Required PHP -

c# - Resource not found error -