2013-02-02 99 views
0

我有一个非常简单的问题,但我显然做错了什么。我已经尝试了很多方法来做到这一点,但总有一些事情搞砸了。Android RelativeLayout标题问题

我有一个水平LinearLayout作为标题的ListView。我希望<和>充当“后退和下一个”小部件,位于LinearLayout的最左侧和最右侧部分。 LIST HEADER部分应该在它们之间居中。

制作LIST HEADER有属性android:layout_width="match_parent"切断右手箭头。否则,它将位于左侧箭头的顶部,即使它出现在XML文件中的LIST HEADERTextView之后。

 
<  LIST HEADER  > 
List item number 1 
List item number 2 
List item number 3 

我不是新在这个阶段到Android但这似乎根本。任何帮助,将不胜感激。 我应该补充说我没有使用eclipse。

当前XML(有点凌乱尝试这么多的事情,道歉后):

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

    <LinearLayout 
    android:orientation="horizontal" 
    android:gravity="center" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:id="@+id/LeftFormulaHeaderLayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="left" 
     android:textSize="@dimen/text_huge" 
     android:id="@+id/LeftFormulaHeader" 
     android:text="&lt;"/> 
    </RelativeLayout> 
    <TextView 
     android:layout_width="200dip" 
     android:layout_height="wrap_content" 
     android:textSize="@dimen/text_huge" 
     android:ellipsize="end" 
     android:scrollHorizontally="false" 
     android:singleLine="true" 
     android:gravity="center" 
     android:id="@+id/FormulaHeader"/> 

    <RelativeLayout 
     android:id="@+id/RightFormulaHeaderLayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
    <TextView 
    android:id="@+id/RightFormulaHeader" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="right" 
    android:textSize="@dimen/text_huge" 
    android:text="&gt;"/> 
    </RelativeLayout> 
</RelativeLayout> 
</LinearLayout> 


    <ListView 
    android:id="@+id/TheList" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#000033" 
    android:layout_weight="1" 
    android:drawSelectorOnTop="false" /> 

    <TextView 
     android:id="@+id/empty_list_item" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="gone" 
     android:text="@string/empty_list" /> 
</LinearLayout> 

回答

2

您的主要问题:gravity影响文本在TextView内的定位。你想alignParentLeft/- RightcenterHorizontal为你正在做什么(尽管gravity="center"仍然保持头在其视图中心)。

<RelativeLayout 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:textSize="@dimen/text_huge" 
    android:id="@+id/LeftFormulaHeader" 
    android:text="&lt;"/> 
<TextView 
    android:layout_width="200dip" 
    android:layout_height="wrap_content" 
    android:textSize="@dimen/text_huge" 
    android:ellipsize="end" 
    android:scrollHorizontally="false" 
    android:singleLine="true" 
    android:layout_centerHorizontal="true" 
    android:gravity="center" 
    android:id="@+id/FormulaHeader" 
    android:text="HEADER"/> 

<TextView 
android:id="@+id/RightFormulaHeader" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentRight="true" 
android:textSize="@dimen/text_huge" 
android:text="&gt;"/> 
</RelativeLayout> 
+0

除了修改'RelativeLayout'的'layout_height'是'wrap_content',这个解决方案工作得很好。谢谢大家! –

1

你应该能够与重量的工作属性在这里:

<!-- Your header layout. --> 

<LinearLayout orientation="horizontal" weight_sum="1"> 

    <!-- Button left. --> 

    <TextView layout_width="30dp" layout_height="30dp" /> 

    <!-- Headline. --> 

    <TextView layout_width="0dp" layout_height="30dp" layout_weight="1" gravity="center" /> 

    <!-- Button right. --> 

    <TextView layout_width="30dp" layout_height="30dp" /> 

</LinearLayout> 

上述代码不适用于复制/粘贴。你需要添加你的细节。我只是想指出最重要的事情:

  • 对于这个解决方案有左/右部件固定宽度
  • 注意,标题为0dp的宽度是非常重要的...
  • ...和1的重量!

因此,标题将最终取得所有包装的可用空间,除了2 * 30dp的左/右小部件。

3

您可以使用下面的代码与RelativeLayout的帮助,而不是与LinearLayout搞乱的:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/Wrapper" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
     android:orientation="horizontal" 
    > 

     <ImageView 
       android:id="@+id/icon1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/ic_launcher" 
       android:layout_alignParentLeft="true" /> 

      <ImageView 
       android:id="@+id/icon2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/ic_launcher" 
       android:layout_centerVertical="true" 
       android:layout_centerInParent="true" /> 

       <ImageView 
       android:id="@+id/icon3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/ic_launcher" 
       android:layout_alignParentRight="true" /> 

</RelativeLayout> 

OutputScreenShot:

enter image description here

即使这个代码可以帮助中心垂直布局中的视图。您可以将第二个ImageView更改为TextView以显示文本。希望这可以帮助。

1

尝试用我的下面的代码我已经做了一些相关的更改。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:orientation="horizontal" > 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
     <RelativeLayout 
      android:id="@+id/LeftFormulaHeaderLayout" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 
      <TextView 
       android:id="@+id/LeftFormulaHeader" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="left" 
       android:text="&lt;" 
       android:textSize="20sp" /> 
     </RelativeLayout> 
     <TextView 
      android:id="@+id/FormulaHeader" 
      android:layout_width="200dip" 
      android:layout_height="wrap_content" 
      android:ellipsize="end" 
      android:gravity="center" 
      android:layout_centerHorizontal="true" 
      android:scrollHorizontally="false" 
      android:singleLine="true" 
      android:text="kajsgfuisagf" 
      android:textSize="20sp" /> 
     <RelativeLayout 
      android:id="@+id/RightFormulaHeaderLayout" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 
      <TextView 
       android:id="@+id/RightFormulaHeader" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_alignParentRight="true" 
       android:text=">" 
       android:textSize="20sp" /> 
     </RelativeLayout> 
    </RelativeLayout> 
</LinearLayout> 
<ListView 
    android:id="@+id/TheList" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="#000033" 
    android:drawSelectorOnTop="false" /> 
<TextView 
    android:id="@+id/empty_list_item" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="empty_list" 
    android:visibility="gone" /> 

enter image description here