android 展开彼此相邻的两个TextView

ddrv8njm  于 2023-05-12  发布在  Android
关注(0)|答案(2)|浏览(131)

我想把两个TextView放在一起,让它们根据各自的内容展开。
两个TextView的内容都是完全动态和不可预测的,因此我希望解决方案在下图所示的所有情况下都能一致地工作:
1.第一个TextView的内容非常长(而且可能还必须 Package 成多行),而另一个TextView的内容相对较短。
1.恰恰相反,即。第一个TextView的内容较短。
1.两个TextViews的内容都很长,必须换行。理想情况下,它们应该在中间相遇。

我尝试了LinearLayoutConstraintLayoutRelativeLayout的各种设置,但没有一个在所有情况下都能一致地工作。要创建上面屏幕截图中的布局,我必须根据文本长度手动自定义每个TextView的属性。然而,我假设我不能很容易地判断每个文本在运行时将占用多少空间(例如:它是否会被 Package 成多行等),因此,我担心我不能动态地微调TextView的属性取决于它们的内容。这就是为什么我试图找到一些设置,将工作一贯没有我的干预,虽然我知道这可能是不可能的。不管怎样,我希望我只是错过了一些明显的东西。
或者,我会考虑“测量”每个文本的预期宽度,以决定TextViews的设置并动态微调它们,但这只是最后的手段。

whlutmcx

whlutmcx1#

您可以尝试使用Flexbox实现上述结果

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.flexbox.FlexboxLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp"
    app:flexDirection="row">

    <TextView
        android:id="@+id/textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        tools:text="@tools:sample/lorem/random" />

    <TextView
        android:id="@+id/textview2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        tools:text="@tools:sample/lorem/random" />

</com.google.android.flexbox.FlexboxLayout>

结果:

查看Flexbox提供的所有参数,以根据您的需求进行调整。例如app:layout_minWidth,其为子节点提供最小宽度。

btqmn9zl

btqmn9zl2#

将两个文本视图都设置为0dp。如果您使用的是Constraint layout,则将两个视图的边约束到它们自己和父视图。你应该得到你想要的结果。

相关问题