android - 提示后面的光标

标签 android cursor textview hint

我的 EditText 有问题,其中重力设置为中心。因此,我必须将属性 android:ellipsize="start" 放在中间,以便提示出现。

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

enter image description here

我想做的是在文本之前显示光标。对此有何建议?

最佳答案

我有3种解决方案,实际上是两种方式。一方面当文本为空时需要显示提示,我们隐藏提示或显示,另一方面是调整光标(widgit)位置。前提是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);
}

关于android - 提示后面的光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19625239/

相关文章:

java - 循环重绘问题

java - 如何在第二个 Activity 的 Texview 中显示来自 Mainactivity 的变量

java - Realm.io [Java] 通知 - 如何仅监听特定表中的更改?

android - 如何影响 Android Textview 中的换行符

html - 如何在html中设置自定义光标?

python - 如何在 Python 代码中使用 postgres 游标

android - 如何以编程方式在右侧Textview设置图像

android - 如何识别textview到达屏幕底部?

android - 在 Android 上使用 Dagger 2 进行延迟注入(inject)

Android:如何让 UI 线程等待异步任务完成