我遇到EditText
的问题,其中重力设置为居中。因此,我必须将提示的属性android:ellipsize="start"
显示在中心。
但是,提示出现在光标之前,这给应用程序带来了相当难看的外观:
我想要做的是在文本前显示光标。有什么建议吗?
答案 0 :(得分:0)
@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("");