所以,想法就是:我有两个TextViews
,首先可以扩展它想要的东西,第二个总是5个字符(时间)。问题在于,第一个TextView
可以很容易地将第二个推出屏幕。
所以,我需要的是可调LinearLayout
,或者某些GridLayout
,如果它不适合父母,它会在某种第二行上移动第二TextView
。
例如,您可以在Viber和WhatsApp中查看消息气泡。谢谢你的任何建议。
这是我现在拥有的XML(仅限消息部分)
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/messageBox"
android:layout_gravity="center_vertical"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
android:textColor="@color/black"
android:text='@{mess.message}'/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical|end"
android:gravity="center_vertical|end"
android:paddingLeft="8dp"
android:textSize="12sp"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
android:text='@{Utils.parseMillsToHoursAndMins(mess.date)}'/>
</LinearLayout>
所以我将layout_weight添加到第一个TextView
,这有助于我的第一个问题,但现在我有了新问题。这两个TextView
位于LinearLayout
中,位于另一个LinearLayout
中,另一个TextView
。父LinearLayout
已将宽度设置为wrap_content,因此如果top TextView
大于2 TextView
s,则会导致子LinearLayout
小于其父级,第二个TextView
(从那个2)不会在父母的末尾。但是当孩子LinearLayout
更大时,一切似乎都没问题。我知道它很复杂,所以这是XML
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="0dp"
android:id="@+id/contentPanel"
app:bringToFront="@{true}"
android:orientation="vertical"
android:background="@{(mess.isMine?@drawable/chat_bubble_right:@drawable/chat_bubble_left)}">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{!mess.authorRole.equals("Client")?(mess.authorRole + " - " + mess.author):mess.author}'
android:textColor='@{mess.authorRole.equals("Lawyer")?@color/colorPrimary:mess.authorRole.equals("Admin")?@color/red:@color/green}'
android:textSize="12sp"
android:id="@+id/author"
android:fontFamily="sans-serif-medium"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/messageBox">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:layout_weight="0.7"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
android:textColor="@color/black"
android:text='@{mess.message}'/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingLeft="8dp"
android:textSize="12sp"
android:gravity="bottom|end"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
app:checkFit="@{false}"
android:text='@{Utils.parseMillsToHoursAndMins(mess.date)}'/>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:0)
如果您在linearlayout中的文字视图可以添加weightSum方法
答案 1 :(得分:0)
我不确定这会对您有所帮助,但是: 使用:https://github.com/ApmeM/android-flowlayout
<org.apmem.tools.layouts.FlowLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</org.apmem.tools.layouts.FlowLayout>
在FlowLayout内部,你可以放置你的视图,如果不合适,它会自动移动到下一行。