Android 文本中的字母间距

Android 文本中的字母间距,android,android-layout,android-edittext,Android,Android Layout,Android Edittext,我试图显示一个文本框,其中的字母用空格分隔 EditText wordText = (EditText) findViewById(R.id.word_text); wordText.setPaintFlags(wordText.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); InputFilter[] filterArray = new InputFilter[2]; filterArray[0] = new Inpu

我试图显示一个文本框,其中的字母用空格分隔

    EditText wordText = (EditText) findViewById(R.id.word_text);
    wordText.setPaintFlags(wordText.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
    InputFilter[] filterArray = new InputFilter[2];
    filterArray[0] = new InputFilter.AllCaps();
    filterArray[1] = new InputFilter.LengthFilter(10);
    wordText.setGravity(Gravity.CENTER);
这是布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/match_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:layout_marginTop="100dp">

    <EditText android:id="@+id/word_text"
        android:layout_width="200dip"
        android:layout_height="wrap_content"
        android:hint="Your Word"
        android:maxLength="15"
        android:inputType="textCapWords"/>

    <Button
        android:id="@+id/match_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="start"
        android:text="Match"
        android:layout_marginTop="50dp"/>
</LinearLayout>

如何在API 12中的字母之间添加空格。我不想使用setLetterSpacing()


另外,当我开始打字时,setGravity(Gravity.CENTER)会使我的字母从方框的中心出现。如何使其从左到右显示?如果设置Gravity.LEFT,编辑文本本身将在LinearLayout中向左移动。有人能帮忙吗?

多年来,字母间距的问题似乎已经造成了相当多的流量。有些人鼓吹使用
textScaleX
属性,但这本身不是一个可接受的解决方案,因为它也会扭曲字母。提到的其他几个解决方案包括:

  • 创建自定义字体并在其中添加您自己的间距。不过,这很复杂,因为它涉及版权,而且字母之间的间距也不是那么动态
  • 在字母之间添加空格——也不太理想,因为在增加间距值时,没有足够的粒度
  • textScaleX
    和在字母之间添加空格的组合-它涉及一个自定义视图,其中
    textScaleX
    仅应用于空格-因此字母保持不变,只有空格增加或减少。也可以使用不可拆分的空格unicode字符。对于此解决方案,您可以查看
  • Make TextWatcher(此示例用于在EditText字段中仅输入数字,如有必要,您可以对其进行更改)

    }

  • 将此textWatcher附加到您的EditText:

     EditText.addTextChangedListener(new CustomTextWatcher());
    

  • 为什么不想使用setLetterSpacing()?要对齐文本,请在XML布局中使用android:layout\u gravity=“left”或适当的API函数。它还可以询问您对android:layout_gravity=“start”的使用情况。我建议您添加布局文件,正如我提到的,由于我的minSdk是API 12,setLetterSpacing不可用,因此我也会遇到编译器错误。当我使用Gravity.Left时,我的编辑文本本身会移动到屏幕的左侧。我想把它放在中间,但当我打字时,字母应该从左边出现。有可能这样做吗?
     EditText.addTextChangedListener(new CustomTextWatcher());