EditText中的“word-wrap:break-word”

时间:2014-03-09 22:37:56

标签: android android-layout word-wrap

有一个类似于css的android属性“自动换行”吗?

我只是想让我的文字没有被空格,短划线等包裹起来,就像这样:

  1. 你好,w
  2. 年世界
  3. 而不是

    1. 你好,
    2. 世界

1 个答案:

答案 0 :(得分:5)

不幸的是,android没有这个属性。但是你可以用ReplacementTransformationMethod替换所有破碎的字符。

class WordBreakTransformationMethod extends ReplacementTransformationMethod
{
    private static WordBreakTransformationMethod instance;

    private WordBreakTransformationMethod() {}

    public static WordBreakTransformationMethod getInstance()
    {
        if (instance == null)
        {
            instance = new WordBreakTransformationMethod();
        }

        return instance;
    }

    private static char[] dash = new char[] {'-', '\u2011'};
    private static char[] space = new char[] {' ', '\u00A0'};

    private static char[] original = new char[] {dash[0], space[0]};
    private static char[] replacement = new char[] {dash[1], space[1]};

    @Override
    protected char[] getOriginal()
    {
        return original;
    }

    @Override
    protected char[] getReplacement()
    {
        return replacement;
    }
}

'\ u2011'是非破折号,'\ u00A0'是不间断的空格。不幸的是,UTF并没有用于斜杠('/')的非破坏模拟,但你可以使用除法斜杠('/')。

要使用此代码,请将WordBreakTransformationMethod的实例设置为EditText。

myEditText.setTransformationMethod(WordBreakTransformationMethod.getInstance());