3

EditText重力が中心に設定されている場所に問題があります。android:ellipsize="start"そのため、ヒントが表示される属性を中央に配置する必要がありました。

ただし、ヒントはカーソルの前に表示されるため、アプリケーションの外観がかなり悪くなります。

ここに画像の説明を入力

私がやりたいことは、テキストの前にカーソルを表示することです。これに関する提案はありますか?

4

3 に答える 3

0

テキストが空の場合、ヒントを表示する必要がある3つの解決策があります。ヒントを表示するか、ヒントを非表示にします。もう1つの側面は、カーソル(widgit)の位置を調整することです。前提条件は、EditTextをレイアウトに配置し、edittextを調整しますレイアウトの重力は自己重力ではありません。しかし、私の要求はヒントの前です。あなたは重力を右に向けるだけです。この写真のように: ここに画像の説明を入力してください

 @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);
}
于 2015-12-30T08:31:32.743 に答える
-1

このスレッドに従って、EditTextのsetSelectionメソッドを使用できると思います。

于 2013-10-28T00:11:10.167 に答える