【问题标题】:Word Wrapping issue in AndroidAndroid中的自动换行问题
【发布时间】:2017-07-13 12:10:23
【问题描述】:
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);

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

【问题讨论】:

  • 请发布您的代码。
  • 您可以将 textSize 更改为动态以适应(因为 Android 操作系统根据设备密度确定文本的空间分配)。
  • @Andy Developer 我添加了代码
  • 可能是您的尺码有问题。尝试使用 COMPLEX_UNIT_DIP 而不是 COMPLEX_UNIT_PX。为什么要设置固定比率?
  • 宽度不能设置成510*ratio,需要根据每个设备动态查找。

标签: android text word-wrap


【解决方案1】:

我终于解决了这个问题:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多