android两个linearlayouts与等效分区通过android:layout_weight不行

时间:2012-06-14 11:03:10

标签: android textview alignment android-linearlayout

我想显示分配给两个不同标题的三个不同值,换句话说,第一个标题包含一个值,第二个标题包含两个值

我的方法是拆分“标题线性布局”40/60和“值线性布局”40/30/30。为了不显示从边界开始的文本,我在任何地方放置了android:layout_marginLeft="15dp",所以最后它应该保持成比例。

在我的XML中,我声明了以下内容:

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView 
        android:layout_weight="4"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:text="@string/txt_price_chf"
        />
    <TextView 
        android:layout_weight="6"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:text="@string/txt_price_offshore_chf"
        />
</LinearLayout>

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView android:id="@+id/tv_price_ch"
        android:layout_weight="4"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:text="Value1"
        />

    <TextView android:id="@+id/tv_price_off_chf"
        android:layout_weight="3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:text="Value2"
        />

    <TextView android:id="@+id/tv_price_off_eur"
        android:layout_weight="3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:text="Value3"
        />
</LinearLayout>

结果如下:

enter image description here

为什么“价格离岸:” - TextView和“Value2”-TextView不一致?请注意,“离岸价格”保存在我的strings.xml中,没有像空格或类似的错误。首先我想,它是由android:layout_marginLeft="15dp"引起的,但是

  • 我怎么理解“dp”是特定的相对值    分辨率(因此android:layout_weigth的分割不应该    影响这个)和

  • 如果我删除边距,它们仍然不在    线。

有人有想法吗?我是否忽视了一些明显的东西?

3 个答案:

答案 0 :(得分:1)

<TextView 
        android:layout_weight="4"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="-10dp"
        android:text="@string/txt_price_chf"
        />

这对你有用......

答案 1 :(得分:0)

不是你应该用LinearLayout做的事情。

我建议使用RelativeLayout,你可以说那两个应该对齐。

在这种特殊情况下,如果不深入细节,可以是marginRight,padding等,也可以只是非等宽字体的副作用。

答案 2 :(得分:0)

或另一种选择:

        <LinearLayout
       android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_weight=".60"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="txt_price_chf" />

    <TextView
        android:id="@+id/tv_price_ch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Value1" />
    </LinearLayout>


      <LinearLayout
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:layout_marginLeft="10dp"
          android:layout_weight=".40"
          android:orientation="vertical" >

        <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="txt_price_offshore_chf" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/tv_price_off_chf"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Value2" />

        <TextView
            android:id="@+id/tv_price_off_eur"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Value3" />
    </LinearLayout>
</LinearLayout>