2013-07-27 71 views
0

我有以下看法结构:卧式布局TextViews对齐左右

------------------------------------ 
||------------||------------------|| 
||Text View 1 || Long Text View 3|| 
||------------||------------------|| 
||------------||------------------|| 
||Text 2  || View 4   || 
||------------||------------------|| 
------------------------------------ 

我想以下行为:

  1. 左列左对齐
  2. 右列作为一个组与右边界对齐,但TextViews与左边对齐。
  3. 只要留下足够的空间用于其他列,则列会延伸并占用空间。
  4. 如果没有足够的空间来完全适合两列,则水平空间被分割为1/2,并且文本视图将自动换行。

我几乎实现了这两个垂直LinearLayouts嵌套到水平LinearLayout。但#3不满意。如果我为左右两列设置权重= 1,即使有更多空间,它们也最多占据50%。

我该如何达到所需的布局?

我已阅读Aligning textviews on the left and right edges in Android layout和其他答案。 Relativelayout不起作用 - 在文本溢出的情况下,一列与另一列重叠。或者,如果我指定“toTheRightOf”,它首先完全离开列,然后尝试以每行垂直文本的单个字符结尾的右列结束。

我的XML:

<LinearLayout 
      android:orientation="horizontal" 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent"> 
     <LinearLayout 
       android:id="@+id/leftTopPanel" 
       android:orientation="vertical" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="1dp" 
       android:gravity="left" 
       android:layout_weight="1"> 
      <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="very very very long text " 
        style="@style/InfoTextStyle.Big" 
        android:id="@+id/leftTopText"/> 
      <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="text" 
        style="@style/InfoTextStyle" 
        android:id="@+id/leftTopText2"/> 
     </LinearLayout> 
     <LinearLayout 
       android:id="@+id/rightTopPanel" 
       android:orientation="vertical" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="1dp" 
       android:layout_weight="1" 
       android:gravity="right" 
       > 
      <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Also very very very long text" 
        style="@style/InfoTextStyle" 
        android:id="@+id/rightTopText" 
        android:layout_gravity="left"/> 
      <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Shorter text" 
        style="@style/InfoTextStyle" 
        android:id="@+id/rightTopText2" 
        android:layout_gravity="left"/> 
     </LinearLayout> 
    </LinearLayout> 
+0

安置自己的XAML,使我们有一个起点 – ramaral

+0

加了我的布局XML –

+1

我THIK阿卜杜勒NURKALEM有一个不错的办法。 – ramaral

回答

1

此代码运行你...

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 

<RelativeLayout 
    android:id="@+id/Sperator" 
    android:layout_width="1dp" 
    android:layout_height="match_parent" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" > 

</RelativeLayout> 

<RelativeLayout 
    android:id="@+id/FirstLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_toLeftOf="@id/Sperator" > 

    <TextView 
     android:id="@+id/tvFirstLabel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:text="TextView" 
     android:textSize="24sp" /> 

    <TextView 
     android:id="@+id/tvFirstParagraph" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@id/tvFirstLabel" 
     android:text="ASFDNASKLCFNLASKFKLACNKJCUKENFIWOCNAMSKLDJAIUEFBN" /> 

</RelativeLayout> 

<RelativeLayout 
    android:id="@+id/SecondLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:layout_toRightOf="@id/Sperator" > 

    <TextView 
     android:id="@+id/tvSecondLabel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:text="YourLongTextView" 
     android:textSize="24sp" /> 

    <TextView 
     android:id="@+id/tvSecondParagraph" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@id/tvSecondLabel" 
     android:text="ASFDNASKLsdfnjsacjsbnfsbfjhsbfjdsbfjhsbvfjhsbvfjbskCFNLASKFKLACNKJCUKENFIWOCNAMSKLDJAIUEFBN" /> 

</RelativeLayout> 

ScreenShoot是;

enter image description here

+0

如果一列很短,它会让另一列增长到50%以上吗? –

+0

请等待,我创建项目并发送给您.. –

1

这runnung。请试试这个..

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <RelativeLayout 
      android:id="@+id/FirstLayout" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:minWidth="100dp" > 

      <TextView 
        android:id="@+id/tvFirstLabel" 
        android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:text="TextView" 
      android:textSize="24sp" /> 

      <TextView 
        android:id="@+id/tvFirstParagraph" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_below="@id/tvFirstLabel" 
        android:text="fasfdsfsdfsdcvzxfasd" /> 

    </RelativeLayout> 

    <RelativeLayout 
      android:id="@+id/Sperator" 
      android:layout_width="1dp" 
      android:layout_height="match_parent" 
      android:layout_alignParentTop="true" 
      android:layout_toRightOf="@id/FirstLayout" > 

    </RelativeLayout> 

    <RelativeLayout 
      android:id="@+id/SecondLayout" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:layout_toRightOf="@id/Sperator" 
      android:minWidth="100dp" > 

      <TextView 
        android:id="@+id/tvSecondLabel" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentTop="true" 
        android:text="YourLongTextView" 
        android:textSize="24sp" /> 

      <TextView 
        android:id="@+id/tvSecondParagraph" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_below="@id/tvSecondLabel" 
        android:text="ASFDNASKLsdfnjsacjsbnfsbfjhsbfjdsbfjhsbvfjhsbvfjbskCFNLASKFKLACNKJCUKENFIWOCNAMSKLDJAIUEFBN" /> 

    </RelativeLayout> 

</RelativeLayout> 

我希望这是帮助你:)

+0

它将右侧面板向左对齐:) –

+1

但是,您给了我一个主意。它看起来像follwoing结构:RelativeLayout(RelativeLayout(LinearLayout(TextView,TextView)),RelativeLayout(LinearLayout(TextView,TextView)))应该做的工作 –

+0

如果这个答案帮助你,请检查这个答案:) –

0

好了,下面的代码对我的作品。如果您想让面板增长超过50%,请在两个RelativeLayouts中将android:layout_width="0dp"替换为android:layout_width="wrap_content"

<LinearLayout 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:id="@+id/relativeLayout"> 
     <RelativeLayout 
       android:id="@+id/leftTopPanel" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:layout_marginRight="1dp"> 
      <LinearLayout android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:orientation="vertical" 
          android:layout_alignParentLeft="true"> 
       <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="very very very very text " 
         style="@style/InfoTextStyle.Big" 
         android:id="@+id/leftTopText"/> 
       <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="text" 
         style="@style/InfoTextStyle" 
         android:id="@+id/leftTopText2"/> 
      </LinearLayout> 
     </RelativeLayout> 

     <RelativeLayout 
       android:id="@+id/rightTopPanel" 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:layout_height="wrap_content"> 
      <LinearLayout android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:orientation="vertical" 
          android:layout_alignParentRight="true"> 
       <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="long text" 
         style="@style/InfoTextStyle" 
         android:id="@+id/rightTopText"/> 
       <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Shorter text" 
         style="@style/InfoTextStyle" 
         android:id="@+id/rightTopText2"/> 
      </LinearLayout> 
     </RelativeLayout> 
    </LinearLayout>