Android 根据需要排列两个文本视图,或者甚至在父视图中分发它们

Android 根据需要排列两个文本视图,或者甚至在父视图中分发它们,android,android-layout,textview,Android,Android Layout,Textview,我已尝试使用LinearLayout/layout\u weight或RelativeLayout,但无法使布局按预期运行 我想做的是一个布局,其中两个文本视图水平排列,中间有一个分隔符。(包含)布局具有恒定的最大宽度,但可能小于(但不大于)该宽度。两个textview的宽度应取决于其内容,但也应具有上边界,以便它们都适合此布局 这是两种情况的可视化: a) 两个textview都适合它们的布局容器,并且应该在它们之间用分隔符对齐。下面,包含的布局由外括号定义,可能大于文本视图 [[abcdef

我已尝试使用
LinearLayout
/
layout\u weight
RelativeLayout
,但无法使布局按预期运行

我想做的是一个布局,其中两个
文本视图水平排列,中间有一个分隔符。(包含)布局具有恒定的最大宽度,但可能小于(但不大于)该宽度。两个
textview
的宽度应取决于其内容,但也应具有上边界,以便它们都适合此布局

这是两种情况的可视化:

a) 两个
textview
都适合它们的布局容器,并且应该在它们之间用分隔符对齐。下面,包含的布局由外括号定义,可能大于
文本视图

[[abcdefgs][delim][12334345]             ]
(容器)布局宽度可以是
wrap\u content
fill\u parent

b) 两个
textview
都不适合其布局容器的(最大)宽度。然后,它们应均匀分布在布局内部(最大宽度)。
文本视图的文本将被截断

 ..... 50% .....         ..... 50% .....
[[abcdefghijk...][delim][123456789012...]]

有人知道如何做到这一点吗?

我不知道这是否是你想要的(因为你的问题模棱两可),但看看这个布局是否有帮助:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ellipsize="end"
            android:text="TextView" />

        <View
            android:layout_width="2dp"
            android:layout_height="fill_parent"
            android:background="#99cc00" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ellipsize="end"
            android:text="TextView" />
    </LinearLayout>

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

</LinearLayout>


其中两个
文本视图之间的
视图
表示分隔符。在两个
文本视图中插入更多文本,查看它们占用的空间。

好。如果文本视图占用的空间比其父视图少,则可以正常工作。文本越多,垂直空间分布(textA | delim | textB)约为70%| 30%。两者(textA,textB)都被截断,但不相等。因此,它比我的版本更好,它的相对位置(从左到右对齐)只有文本B被截断。@beta当我测试布局时,我对两个
文本视图使用了相同的(精确的)文本(如
“sdfjfdsfsdfbdjfbdsjfbdsjkfbdsjf”
),并且它工作正常(您可以尝试并测试它)。我猜两个
textview
具有不同的宽度,这使得
layout\u weight
无用。在运行一些测试之后,我认为您无法在xml布局文件中实现这种类型的布局。我之所以这么说,是因为你最终将不得不在某个地方使用
layou-weight
,这将迫使你的
textview
具有相同的宽度,而它们不应该具有相同的宽度(例如:当第二个
TextView
远大于第一个
TextView
时,第一个
TextView
和分隔器之间会出现巨大的间隙,因为
布局权重将被分割50%)。我没有测试过任何东西,但您可以尝试在代码中安排
文本视图
,但这很容易会变得混乱。我也是这么认为的。参数布局权重只共享剩余的空白空间,不限制空间。我有类似的问题,在多次尝试用xml解决后,结果是custom布局,基于线性布局,请参见我的答案