Android:布局问题,包含2个包含长文本的文本视图

时间:2011-04-26 14:09:50

标签: java android layout

我在让两个Textview按照我想要的方式行事时遇到了问题。

我想要一个在左侧,另一个在右侧。我通过水平线性布局很简单地实现了这一点。他们两个应该只使用水平空间的一半(“留在他们身边”)并且如果字符串太长则垂直展开。

但是,如果一个或两个文本视图包含一个很长的字符串,我会得到奇怪的结果,这取决于我如何设置权重。

E.g。如果我将权重设置为Left = 1,则Right = 1如果两个字符串都很短或两个字符串都很长,则一切正常。但是,如果它们不同,那么短的缩小只会在每一行的字符上显示。使用0/0权重,较短的TextView就完全消失了。

如果我将短字符串文本视图设置为“0”而将长字符串文本视图设置为“1”或更高,但是只能覆盖一个案例,我可以使用它。

我还尝试了TableLayout和RelativeLayout,但没有任何效果。

亲切的问候, 水母

编辑: 通过将TextViews放入水平布局中的垂直LinearLayouts来解决它:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:orientation="horizontal">

    <LinearLayout
        android:layout_height="wrap_content" 
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_weight="1">

        <TextView  
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:gravity="right"
            android:layout_gravity="right">
        </TextView>

    </LinearLayout>

    <LinearLayout
        android:layout_height="wrap_content" 
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_weight="1">

        <TextView  
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:gravity="right"
            android:layout_gravity="right">
        </TextView>

    </LinearLayout>

</LinearLayout>

虽然看起来有点过大但是......但显然没有其他解决办法吗?

2 个答案:

答案 0 :(得分:4)

如果我将一个字母字符串设置为第一个textView并将非常长的字符串设置为第二个textView

,这对我来说很好用
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal">
    <TextView android:id="@+id/textView1" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:layout_weight="1"></TextView>
    <TextView android:id="@+id/textView2" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:layout_weight="1"></TextView>
</LinearLayout>

答案 1 :(得分:1)

为了使android:layout_weight有效,你需要将你想要加权的尺寸设置为0.此外,虽然它不是必需的,但是你的总重量加起来可以很容易破译百分比。我喜欢使用分数并且总数为1.其他人喜欢使用100作为总数。因此,对于两个并排的编辑文本,每个文本占一半的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:orientation="horizontal">

        <TextView  
            android:layout_width="0dip" 
            android:layout_height="wrap_content"
            android:layout_weight=".5"
            android:gravity="right"
            android:layout_gravity="right">
        </TextView>

        <TextView  
            android:layout_width="0dip" 
            android:layout_height="wrap_content"
            android:layout_weight=".5"
            android:gravity="right"
            android:layout_gravity="right">
        </TextView>
</LinearLayout>