提示背后的光标

时间:2013-10-28 00:04:22

标签: android cursor textview hint

我遇到EditText的问题,其中重力设置为居中。因此,我必须将提示的属性android:ellipsize="start"显示在中心。

但是,提示出现在光标之前,这给应用程序带来了相当难看的外观:

enter image description here

我想要做的是在文本前显示光标。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

我有3个解决方案,实际上是2路。当文本为空时需要显示提示,我们隐藏提示要么显示,另一边是调整光标(widgit)location.precondition是EditText放在一个布局中,调整edittext的布局重力而不是它的自重。但是我的要求是在提示之前,你只是引力到右边。 像这张照片: enter image description here

 @Override
public void onFocusChange(View v, boolean hasFocus) {
    adjustCursorPosition(etInput.getText());
}

@Override
public void afterTextChanged(Editable s) {
    adjustCursorPosition(etInput.getText());
}

private void adjustCursorPosition(CharSequence text){
    if (!TextUtils.isEmpty(etInput.getHint())){
        adjustGravityForCursor(text);
        //adjustCursorVisible(text);
        //adjustHintContent(hasFocus(),text);
    }
}

private void adjustHintContent(boolean hasFocus, CharSequence text){
    if (TextUtils.isEmpty(text)) {
        etInput.setHint(hasFocus ? "" : mHint);
    }
}

private void adjustCursorVisible(CharSequence text){
    etInput.setCursorVisible(!TextUtils.isEmpty(text));
}

private void adjustGravityForCursor(CharSequence text) {
    LayoutParams lp = (LayoutParams) etInput.getLayoutParams();
    if (mSpaceWidth <= 0) mSpaceWidth = lp.width;
    if (!TextUtils.isEmpty(text)) {
        etInput.setGravity(Gravity.CENTER);
        lp.leftMargin = 0;
    } else {
        etInput.setGravity(Gravity.LEFT);
        lp.leftMargin = (mSpaceWidth - measureText(etInput,mHint)) / 2;
    }
    etInput.setLayoutParams(lp);
}

答案 1 :(得分:-1)

我认为您可以按照setSelection使用EditText的this thread方法。

答案 2 :(得分:-1)

最快的解决方案是清除editText Touch上的提示:(我假设这个edittext为MYET)。 首先,为MYET设置onTouch侦听器。

然后,onTouch,返回TRUE(实例为false)。

之后,在onTouch上,使用MYET.setHint(&#34;&#34;);这将清除暗示。

以下是代码:

 MYET.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {

                           MYET.setHint(""); 
                return true;
            }
        });

请注意: 如果setHint("")不起作用,您可以使用MYET.setText("");