Android RelativeLayout标头问题

时间:2013-02-02 04:28:01

标签: android relativelayout

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

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

使LIST HEADER具有属性android:layout_width="match_parent"切断右箭头。否则它会放在左箭头的顶部,即使它出现在XML文件中的LIST HEADER TextView之后。

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

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

CURRENT 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>

4 个答案:

答案 0 :(得分: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 :(得分: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>

答案 2 :(得分: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 :(得分: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