Android 中的自动换行问题

Word Wrapping issue in Android

float ratio = 2.666666666666667f; // 1440/540

TextView textView = new TextView(this);

textView.setText("Ayet-i kerimelerin nazil olmasından sonra Fahr-i Kâinat Efendimiz s.a.v.’in daha fazla ibadet ile meşgul olması, nail olunan büyük ihsan ve ikramlara şükretmesiyle alakalıdır. Nitekim Hz. Aişe r. anha validemizin sorusu üzerine bunu doğrudan ifade de buyuruyorlar. Bizim açımızdan da şükrün edası gayret gerektirir. İbadet ve taatlerimizde, işlerimizde…\n\nFetih sure-i şerifi ile Fahr-i Kâinat Efendimiz s.a.v.’in ümmetinden olarak bizler de nice fetihlerle, gayret ve çabamıza karşılık ilahî mağfiret ve yardımlarla müjdeleniyoruz.\n\nMüminler olarak Cenab-ı Mevlâ’dan asla ümit kesmeden, azami gayret ve çaba göstererek mücadelemize devam ettiğimizde, müjdelendiğimiz fetihler de müyesser olacaktır inşallah.");
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,14*ratio);
textView.setBackgroundColor(Color.parseColor("#ff0000"));
textView.setTextColor(Color.parseColor("#333333"));

RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams((int)(510*ratio), RelativeLayout.LayoutParams.WRAP_CONTENT);
params.leftMargin = (int)(15*ratio);
textView.setLayoutParams(params);

root.addView(textView);

如下图所示,有时某些文本可能会换行到不该换行的下一行。图像中圈出的单词似乎已向下移动到下一行,而它很容易适合当前行中剩余的 space。这种情况可能是android文本引擎计算的结果。我正在从事的项目在这方面很敏感。我可以做些什么来防止这种情况发生?

我终于解决了这个问题:

if(Build.VERSION.SDK_INT >= 23)
   textView.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);