在文本视图中设置字母之间的空格

问题描述 投票:0回答:5

有没有办法将字母之间的自定义空间(以像素为单位)设置为 editText?我只发现如何在行之间设置空格,但在同一行的字母之间设置机器人

android android-edittext space
5个回答
12
投票

使用

android:letterSpacing
我能够在文本视图中的字符之间添加间距

  <android.support.v7.widget.AppCompatTextView
   android:id="@+id/textViewValue"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:letterSpacing="0.35"
   android:maxLines="1" />

相关方法:

setLetterSpacing(浮动)


2
投票

我今天必须自己做,所以这里有一些关于这个问题的更新:

从 API 21 开始,您可以使用 XML 属性

android:letterSpacing="2"
或从代码
myEditText.setLetterSpacing(2);

在 API 21 之前,使用带有以下代码的 TextWatcher

private static final String LETTER_SPACING = " ";

private EditText myEditText;

private String myPreviousText;

...
// Get the views
myEditText = (EditText) v.findViewById(R.id.edt_code);

myEditText.addTextChangedListener(this);
...

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    // Nothing here
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    // Nothing here
}

@Override
public void afterTextChanged(Editable s) {
    String text = s.toString();

    // Only update the EditText when the user modify it -> Otherwise it will be triggered when adding spaces
    if (!text.equals(myPreviousText)) {            
        // Remove spaces
        text = text.replace(" ", "");

        // Add space between each character
        StringBuilder newText = new StringBuilder();
        for (int i = 0; i < text.length(); i++) {
            if (i == text.length() - 1) {
                // Do not add a space after the last character -> Allow user to delete last character
                newText.append(Character.toUpperCase(text.charAt(text.length() - 1)));
            }
            else {
                newText.append(Character.toUpperCase(text.charAt(i)) + LETTER_SPACING);
            }
        }

        myPreviousText = newText.toString();

        // Update the text with spaces and place the cursor at the end
        myEditText.setText(newText);
        myEditText.setSelection(newText.length());
    }
}

0
投票

您可以实现自定义 TextWatcher,并在每次用户输入 1 时添加 X 个空格。


0
投票

我用过这个,并且适用于大多数 API 级别,如果不是全部的话。

KerningViews

提供一组视图,允许调整该视图的字符之间的间距,即字距调整效果。

https://github.com/aritraroy/KerningViews


-1
投票

不需要额外的。只需添加这一行。确定

android:letterSpacing="0.35"
© www.soinside.com 2019 - 2024. All rights reserved.