当内联TextViews不适合时,如何动态更改LinerLayout方向?

时间:2016-09-14 19:43:16

标签: android textview android-linearlayout

我们假设一个TextViews内部LinearLayouts的简单序列与下面的TextViews一样,文字会动态填充到相应的<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/textView2" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/textView3" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/textView4" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/textView5" /> </LinearLayout> </LinearLayout>

TextViews

如果2 textView2的文字,我们如何说textView3textView4,或textView5var someObj= { "1234": { "prop1": "prop1value", "prop2": "prop2value", "prop3": [ "key1", "key2" ] } } ,太宽而不适合内联,那么它们的父LinearLayout的方向会动态地变为垂直,而是将一个放在另一个之上,这样文本就不会以奇怪的方式在屏幕的末尾被中断?

提前致谢!

1 个答案:

答案 0 :(得分:1)

因此,为了以编程方式更改布局方向:

LinearLayout layout = /* ... */;
layout.setOrientation(LinearLayout.VERTICAL);

您可以通过调用getLineCount()来检查textView是否合适。你可以玩这两个来获得预期的结果。

如果您接受此方案,我建议您将布局更改为垂直布局。

你也可以使用autofitTextView控件,这样它总是只需要1行并动态改变字体的大小,如果它对你没问题的话。你可以在这里找到一个:

https://github.com/grantland/android-autofittextview