如果儿童文本视图不适合,请将其换行

时间:2014-03-28 22:10:32

标签: android android-layout android-linearlayout android-view textview

我看过几个SO问题,但这些问题对我来说都不起作用。 例如Android: How to wrap a layout to its views without exceeding a fixed size

这是我目前的布局。

    <LinearLayout
        android:id="@+id/dummy_wrapper"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignRight="@+id/eventTitleList"
        android:layout_below="@+id/eventTitleList"
        android:layout_marginTop="6dp"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:text="Today at 7:00pm - 9:30pm"
            android:textColor="#666666"/>

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:singleLine="true"
            android:text="\@ Museum" />
    </LinearLayout>

对象现在是并排的。如果dummy_wrapper的宽度为“小”且name为几个单词,则为“elipsize-d”(...在其末尾添加并隐藏不能使用的单词可见)。

如果我删除singleLine name将自行包裹。

我想:

  1. 如果父母的宽度“足够大”,则将孩子并排放在一行中。
  2. 如果父级不够大,则将第二个孩子(name)包裹在第一个孩子(time
  3. 之下
  4. 如果父母不够大并且name已被包裹但仍然不适合,那么请“elipsize-d”。
  5. 我不介意是否存在其他类型的视图而不是LinearLayout的解决方案。 xml会比java解决方案更好。

1 个答案:

答案 0 :(得分:0)

您正在寻找的是在任何默认Android布局中原生不存在的布局行为,您必须选择RelativeLayout / LinearLayout并以编程方式检查可用空间并进行正确的计算以验证不同的您想要涵盖的场景或创建自定义ViewGroup。

然而,最近我正在阅读一本书“Android Experts,Apress Editorial”,他们解释了如何创建一个完全按照你想要的方式运行的自定义布局,我不想粘贴他们如何做到这一点的代码这里因为可能存在版权问题,但是第63页,非常简单,但需要对Android视图/布局有完美的理解。

希望它有帮助!

问候!