将TextView保持在按钮右侧的同时居中?

时间:2010-12-07 16:12:20

标签: android android-layout relativelayout

我很确定我以前做过这件事,但我忘了怎么做。

这是问题所在: 我有一个按钮和一个textview,我希望textview居中,而按钮在左侧。

没问题?只需将它们放在relativelayout中,使textview centerinparent,按钮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>

3 个答案:

答案 0 :(得分:3)

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

  • 将TextView的layout_width更改为fill_parent。
  • 将TextView的重力设置为居中(因此TextView中的文本居中位置)
  • 将Button的layout_weight设置为1,将TextView的layout_weight设置为2.请注意,您可能不得不使用这些数字来获取您正在寻找的布局。

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

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

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

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