【问题标题】:implement uitextfield properties in android在android中实现uitextfield属性
【发布时间】:2011-06-08 03:53:34
【问题描述】:

我是一名 android 和 iphone 开发人员。我是一个新手,虽然在这个巨大的项目上工作。我正在尝试在android中实现iphone中文本字段的leftView,leftviewmode,rightview,rightviewmode属性。

我在想,通过 leftview 和 rightview,setCompoundDrawables() 方法可以应对挑战。但是,我对如何实现各种模式感到困惑; “从不”、“总是”等。

我在正确的轨道上吗?有人可以帮忙吗?

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    此代码将为您提供一个 Android EditText 字段,其功能与 iPhone UITextField 完全相同,具有 clearbuttonmode、leftview、rightview、leftviewmode、rightviewmode、UITextFieldViewModeNever、UITextFieldViewModeWhileEditing、UITextFieldViewModeUnlessEditing、UITextFieldViewModeAlways 选项

        String value = "";//any text you are pre-filling in the EditText
        final String viewMode = "editing";//never | editing | unlessEditing | always
        final String viewSide = "right"; //left | right
        final EditText et = new EditText(this);
        et.setText(value);
        //your leftview, rightview or clearbuttonmode image. for clearbuttonmode this one from standard android images looks pretty good actually
        final Drawable x = getResources().getDrawable(R.drawable.presence_offline);
        x.setBounds(0, 0, x.getIntrinsicWidth(), x.getIntrinsicHeight());
        Drawable x2 = viewMode.equals("never")?null:viewMode.equals("always")?x:viewMode.equals("editing")?(value.equals("") ? null : x):viewMode.equals("unlessEditing")?(value.equals("") ? x : null):null;
        et.setCompoundDrawables(viewSide.equals("left")?x2:null, null, viewSide.equals("right")?x2:null, null);
        et.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (et.getCompoundDrawables()[viewSide.equals("left")?0:2] == null) {
                    return false;
                }
                if (event.getAction() != MotionEvent.ACTION_UP) {
                    return false;
                }
                //x pressed
                if ((viewSide.equals("left")&&event.getX() < et.getPaddingLeft() + x.getIntrinsicWidth())
                        ||(viewSide.equals("right")&&event.getX() > et.getWidth() - et.getPaddingRight() - x.getIntrinsicWidth())) {
                    Drawable x3 = viewMode.equals("never")?null:viewMode.equals("always")?x:viewMode.equals("editing")?null:viewMode.equals("unlessEditing")?x:null;
                    et.setText("");
                    et.setCompoundDrawables(viewSide.equals("left")?x3:null, null, viewSide.equals("right")?x3:null, null);
                }          
                return false;
            }
        });
        et.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Drawable x4 = viewMode.equals("never")?null:viewMode.equals("always")?x:viewMode.equals("editing")?(et.getText().toString().equals("") ? null : x):viewMode.equals("unlessEditing")?(et.getText().toString().equals("") ? x : null):null;
               et.setCompoundDrawables(viewSide.equals("left")?x4:null, null, viewSide.equals("right")?x4:null, null);
            }
    
            @Override
            public void afterTextChanged(Editable arg0) {
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      相关资源
      最近更新 更多