2

我很确定我以前做过,但我忘记了如何做。

这是问题所在:我有一个按钮和一个文本视图,我希望文本视图居中,而按钮位于左侧。

没问题?只需将它们放在相对布局中,使 textview centerinparent 和 button alignparentleft。

但现在我要动态更改文本,所以它可能会写在按钮的顶部!我将在 textview 上添加 toRightOf="@id/button" 。不,现在它不再居中。

我希望我能提供一个屏幕截图,但似乎计算机内存不足,无法做到这一点。

这是一些代码: http: //pastebin.com/3N70Vjre(因为我不能粘贴 xml ......?)

  <RelativeLayout
        android:id="@+id/header"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true">
        <Button
                android:id="@+id/leftbutton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:text="text!"
                />
        <TextView
                android:id="@+id/toptext"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@android:color/white"
                android:layout_toRightOf="@id/leftbutton"
                android:layout_centerInParent="true"
                android:textSize="16sp"
                android:textStyle="bold"
                android:text="Text!"
                android:singleLine="true"
                />
  </RelativeLayout>
4

3 回答 3

3

试试这个(不幸的是我在工作,所以不能跳进 Eclipse 来给你一些代码) -

  • 将 TextView 的 layout_width 更改为 fill_parent。
  • 将 TextView 的重力设置为居中(因此 TextView 内的文本居中)
  • 将 Button 的 layout_weight 设置为 1,将 TextView 的 layout_weight 设置为 2。请注意,您可能必须捏造这些数字才能获得所需的布局。

这应该使 TextView 的文本在 Button 之后居中,尽管它不会使 TextView 本身居中。您可以通过将 TextView 替换为容器(线性/相对布局)并在布局而不是 TextView 上执行与上述相同的方法来完成此操作。然后,您将 TextView 放在容器内并将容器的重力设置为“中心”。

希望这有助于为您指明正确的方向:)

于 2010-12-07T16:51:56.877 回答
0

尝试先声明 TextView,然后将按钮对齐到文本视图的左侧。请记住,如果 TextView 变得太宽,您可能会遇到问题。

编辑:我明白了,所以你正在尝试做一些类似于 iPhone 的标题与后退/下一个按钮(无论如何都类似)。试试这个修改。不过,我仍然相信,如果 TextView 变得足够大以点击 Button,您将会遇到问题。

  <RelativeLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/header"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      >
      <TextView
          android:id="@+id/toptext"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textColor="@android:color/white"
          android:layout_alignParentCenter="true"
          android:textSize="16sp"
          android:textStyle="bold"
          android:text="Text!"
          android:singleLine="true"
          />
      <Button
          android:id="@+id/leftbutton"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:text="text!"
          />        
  </RelativeLayout>

试试这个 FrameLayout。这可能会做更多您期望的事情:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView
        android:id="@+id/toptext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textColor="@android:color/white"
        android:textSize="16sp"
        android:textStyle="bold"
        android:text="Text!"
        android:singleLine="true"
        />
    <Button
        android:id="@+id/leftbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Text!"
        />
</FrameLayout>
于 2010-12-07T16:25:02.123 回答
0

你可以试试这个(伪代码):

<RelativeLayout>
  <Button>
  <LinearLayout toLeftOf="toptext" type="horizontal">
    <TextView gravity="center">
  </LinearLayout>
</RelativeLayout>

您可能必须将 LinearLayout 设置为 width="fill_parent"。不确定这是否可行。您随后可以尝试此处列出的一些内容:http: //thinkandroid.wordpress.com/2010/01/14/how-to-position-views-properly-in-layouts/

于 2010-12-07T16:31:45.043 回答