问答中心分类: ANDROIDAndroid文本视图调整文本
0
匿名用户 提问 7小时 前

你是如何得到一篇文章的TextView要对齐(文本在左侧和右侧齐平)?
我找到了一个可能的解决办法在这里,但它不起作用(即使您将垂直中心更改为垂直中心,等等)。

shareef 回复 7小时 前

@Jimbo的答案是正确的我的案子在…上输入文本textview对于阿拉伯语语言,从右到左输入和显示,但对于输入文本,我还必须添加gravity=“right”

shareef 回复 7小时 前

你可以用github。com/pouriaHemmati/justizedtextview

shareef 回复 7小时 前

github。com/amilcar sr/JustizedTextView可以使用

28 Answers
0
CommonsWare 回答 7小时 前

我不相信安卓系统支持充分的理由。
更新2018-01-01:Android 8.0+支持对正模式TextView.

CommonsWare 回复 7小时 前

进一步分析后,你可以给安卓:gravity=“fill_horizontal”一个镜头。这被描述为“如果需要,增大对象的水平大小,使其完全填满容器”,但我不知道它们如何“增大”文本。

user130076 回复 7小时 前

android:gravity=“fill_horizontal”也不起作用。看起来android根本不支持正当性,哦,好吧:)

jcaruso 回复 7小时 前

不,你不能像重力那样设置属性。但是你仍然可以通过使用webview而不是文本视图来设置文本的对齐方式。你可以参考密封io/2010/12/如何在块中对齐文本的唯一方法。html从…偷来的堆栈溢出。com/questions/5976627/…)

John R 回复 7小时 前

@Commonware现在有没有合适的方式来证明文本的合理性?

John R 回复 7小时 前

但如果我们使用一些算法,比如在github中,单词的间距是可怕的,在我们查看文本的情况下,文本会在2秒钟后出现。真让人困惑。顺便说一句,我是你的超级粉丝。

Sagar Nayak 回复 7小时 前

这是可能的。见下面的答案。

nobalG 回复 7小时 前

老兄,为了实现这一点,我一直生活在繁重的webview中,相信我,我的UI迫切需要一些新的东西添加到API中,因为对于listview中的聊天等组件来说,速度太慢了。

natario 回复 7小时 前

奥利奥对此表示支持。

CommonsWare 回复 7小时 前

@FarhanFarooqui:Android 8.0+支持对齐模式。

Vikash Parajuli 回复 7小时 前

setJustificationMode(对齐模式与单词之间);不要给出完美的视角:(这太可惜了。)

qkx 回复 7小时 前

这在大多数情况下都很好,但如果在文本视图中使用url(链接),它就不起作用

0
plainjimbo 回答 7小时 前

@commonware的答案是正确的。安卓8.0+确实支持“完全正当化”(或者简单地说是“正当化”,有时被含糊其辞地称为“正当化”)。
Android还支持“刷新左/右文本对齐”。参见维基百科关于正当理由为了区别。许多人认为“正当化”的概念包括完全的正当性和左/右文本对齐,这是他们在想要做左/右文本对齐时最终搜索的。这个答案解释了如何实现左/右文本对齐。
可以实现齐平的左/右文本对齐(与问题所涉及的完全对齐相反)。为了演示,我将使用基本的两列表单(标签在左列,文本字段在右列)作为示例。在本例中,左列标签中的文本将右对齐,以便它们与右列中的文本字段对齐。
在XML布局中,通过在所有TextView中添加以下属性,可以使TextView元素自身(左列)向右对齐:

<TextView
   ...
   android:layout_gravity="center_vertical|end">
   ...
</TextView>

但是,如果文本换行到多行,文本仍将在TextView中左对齐。添加以下属性会使实际文本在TextView中向右对齐(向左参差不齐):

<TextView
   ...
   android:gravity="end">
   ...
</TextView>

所以重力属性指定如何在TextView中对齐文本重力布局指定如何对齐/布局TextView元素本身。

Paul Lammertsma 回复 7小时 前

如果我理解正确,并且给出了测试的结果,那么所有这些都只是将文本向左或向右对齐。这并不能证明这篇文章是正确的,是吗?

Luis A. Florit 回复 7小时 前

杰出的只是想补充一点,如果你想要居中对齐,你可以这样做android:layout_gravity="center_horizontal|center" android:gravity="center".

Karu 回复 7小时 前

这只是对齐,而不是对齐。仔细阅读维基百科的链接。不同类型的理由之间的差异只影响段落的最后一行。只有一行的段落没有左/右/中对齐。

user924 回复 7小时 前

那如果不是关于你的,为什么还要在这里回答呢justify

Shuvo Sarker 回复 7小时 前

这都是关于左对齐或右对齐,而不是关于对齐(如MS word)。正式的术语在这里没有帮助,你明白问题的意思。

0
Jaydipsinh Zala 回答 7小时 前

TextView在里面安卓O提供充分的理由(新的排版对齐)本身。
你只需要这样做:
Kotlin

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    textView.justificationMode = JUSTIFICATION_MODE_INTER_WORD
}

Java

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    textView.setJustificationMode(JUSTIFICATION_MODE_INTER_WORD);
}

XML

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:justificationMode="inter_word" />

默认为JUSTIFICATION_MODE_NONE(none在xml中)。

Stefan Haustein 回复 7小时 前

希望它能被移植回支持库,然后O:)

Kunal Dharaiya 回复 7小时 前

请在这里添加库!!

MikeOscarEcho 回复 7小时 前

我找不到你的文件。但是我找到了这个,开发商安卓com/reference/android/widget/…是我遗漏了什么,还是Android团队将实现从setJustify更改为setJustify模式?

Jaydipsinh Zala 回复 7小时 前

是的,你说得对@MikeOscarEcho。它(setJustify)早就出现在Android O DP1上了。谢谢你指出这一点。

WindRider 回复 7小时 前

这还不够好!伊姆格。com/a/BR8sV右边不是直线而是锯齿状的!:(

Vikash Parajuli 回复 7小时 前

如何证明使用XML的合理性?

Christian D 回复 7小时 前

您可以在xml中使用android:justicationMode=“inter_word”。

Bink 回复 7小时 前

android需要API 26:JusticationMode。

Iman Marashi 回复 7小时 前

必须是以下之一:线路断路器。对正_模式_无,线路断路器。对齐\u模式\u单词间Min API 29

Lalit Fauzdar 回复 7小时 前

一团糟。一行中的单词较少或较小,这会在它们之间创造出空间,看起来既时髦又糟糕。

Mackovich 回复 7小时 前

我的警告与@iman marashi所说的相同,但代码确实可以编译,而且运行安卓9的设备确实证明了文本的正确性。

0
Konrad Nowicki 回答 7小时 前

为了证明安卓系统中的文本是正确的,我使用了WebView

setContentView(R.layout.main);

    WebView view = new WebView(this);
    view.setVerticalScrollBarEnabled(false);

    ((LinearLayout)findViewById(R.id.inset_web_view)).addView(view);

    view.loadData(getString(R.string.hello), "text/html; charset=utf-8", "utf-8");

还有html。

<string name="hello">
<![CDATA[
<html>
 <head></head>
 <body style="text-align:justify;color:gray;background-color:black;">
  Lorem ipsum dolor sit amet, consectetur 
  adipiscing elit. Nunc pellentesque, urna
  nec hendrerit pellentesque, risus massa
 </body>
</html>
]]>
</string>

我还不能上传图片来证明这一点,但“它对我有用”。

gnac 回复 7小时 前

很好的解决方案。FWIW您不需要大部分额外的html。文本对齐的body标签就足够了。

Paul Lammertsma 回复 7小时 前

这很有效。请注意,可以通过以下方法使背景透明view.loadData()具有view.setBackgroundColor("#00000000").

Paul Lammertsma 回复 7小时 前

然而,我并没有成功地让它加载自定义字体。我试过了thisthis建议,没有任何运气。

Paul Lammertsma 回复 7小时 前

正如我在这些线程中提到的,我找到了一个解决方案:如果创建一个HTML文件并将其放入资产中,通过view.loadUrl()有效,而view.loadData()没有。我不知道为什么后者没有。

Aerrow 回复 7小时 前

我想设置背景图像如何修改这行

Konrad Nowicki 回复 7小时 前

WebView没有设置背景图像的方法。你可以试试这个学校。com/cssref/pr_背景图片。asp

richey 回复 7小时 前

@PaulLammertsma,setBackgroundColor(0x00000000)更愿意成为设置透明背景的正确格式。

Kirit Vaghela 回复 7小时 前

webview.loadDataWithBaseURL(null, displayString, "text/html", "utf-8", "");

0
Mathew Kurian 回答 7小时 前

更新
我们为此创建了一个简单的类。目前有两种方法可以实现你想要的。两者都需要没有网络视图支持西班牙人.
图书馆:https://github.com/bluejamesbond/TextJustify-Android
支持:安卓2.0至5。十、
设置

// Please visit Github for latest setup instructions.

截图
比较巴布亚新几内亚

Leonardo Sapuy 回复 7小时 前

这真的很有帮助,但是使用它,我的文本视图并没有保持原来的格式,我参考了:边距,文本样式,我认为文本大小都不是,请继续使用它,应该是一个很大的帮助

mehmet 回复 7小时 前

我不能建立这些课程。其中一个没有任何packagename,另一个给出了一些黄色错误。其实我不能相信。

Semanticer 回复 7小时 前

很好的库,但我仍然不知道如何使用这个库向文本添加任何格式。

Mbt925 回复 7小时 前

我们如何在行尾检测断线?因为有硬中断的线路不应该是合理的。

Mathew Kurian 回复 7小时 前

@Mbt925我相信这可以做到。你能发张照片吗?

Adam Varhegyi 回复 7小时 前

我测试了这个库,文档不推荐使用,而且这个库不适合我。

Mathew Kurian 回复 7小时 前

@AdamVarhegyi的支持现在有所增长,文档也有所改进。

Naruto Uzumaki 回复 7小时 前

感谢这个伟大的共享库,但它不能支持波斯语或阿拉伯语文本。当我设定方向时,我的话是从头到尾的,而不是从头到尾的。我的意思是:我的词是:“سام”,它的画是这样的:“مال”。(如果你不懂波斯语,请看这个例子:让我说“1234”->“4321”)

superUser 回复 7小时 前

基于scrollView。。。很好的解决方案,但目前还找不到任何答案,使其与textview兼容(

Andrey Luiz 回复 7小时 前

在6.0.1上可以完美运行。

Mathew Kurian 回复 7小时 前

@超级用户出于好奇,继承textview的目的是什么?

Makalele 回复 7小时 前

我在安卓7.0上看不到任何东西。

Hossein Shahdoost 回复 7小时 前

此库不支持RTL语言

ahmed_khan_89 回复 7小时 前

执照呢?

richey 回复 7小时 前

GIT存储库显示“不再维护库”:-(