0

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

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

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

<列表标题>
清单项目编号 1
清单项目编号 2
清单项目编号 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

4 回答 4

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>

输出屏幕截图:

在此处输入图像描述

甚至此代码也有助于您的视图在布局中垂直居中。您可以将第二个更改为显示ImageViewTextView显示的文本。希望这可以帮助。

于 2013-02-02T04:45:41.553 回答
2

您的主要问题:gravity影响文本在TextView. 您想要alignParentLeft/-Right以及centerHorizontal您正在做的事情(尽管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>
于 2013-02-02T04:43:36.233 回答
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" />

在此处输入图像描述

于 2013-02-02T05:04:28.787 回答
1

您应该可以在此处使用 weight 属性:

<!-- 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。

于 2013-02-02T04:40:11.340 回答