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

发布于 2024-10-06 10:53:12 字数 1490 浏览 3 评论 0原文

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

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

没问题?只需将它们放在相对布局中,使文本视图居中,按钮对齐父左。

但现在我要动态更改文本,因此它可以写在按钮顶部!我只需在文本视图上添加 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>

I'm pretty sure I've done this before, but I've forgotten how.

Here's the problem:
I've got a button and a textview, and I want the textview to be centered, while the button is on the left side.

No problem? Just put them in a relativelayout, make the textview centerinparent, and the button alignparentleft.

But now I'm going to dynamically change the text, so it can potentially be written on top of the button! I'll just add toRightOf="@id/button" on the textview. No, now it's no longer centered.

I wish I could provide a screenshot, but it seems the computer is out of memory and can't do that.

Here's some code: http://pastebin.com/3N70Vjre (Since I can't paste 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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

记忆消瘦 2024-10-13 10:53:12

试试这个(不幸的是我在工作,所以无法跳到 Eclipse 来获取一些代码)-

  • 将 TextView 的layout_width 更改为 fill_parent。
  • 将 TextView 的重力设置为居中(以便文本在 TextView 内居中)
  • 将 Button 的layout_weight 设置为 1,将 TextView 的layout_weight 设置为 2。请注意,您可能需要修改这些数字才能获得您想要的布局正在寻找。

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

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

Try this (unfortunately I'm at work so can't jump into Eclipse to get you some code) -

  • Change the layout_width of the TextView to fill_parent.
  • Set the gravity of the TextView to center (so the text centers inside the TextView)
  • Set the layout_weight of the Button to 1 and the layout_weight of the TextView to 2. Note that you may have to fudge with these numbers to get the layout you're looking for.

This should center the text of the TextView after the Button, though it will not center the TextView itself. You can accomplish that by replacing the TextView with a container (Linear/Relative Layout) and doing the same method as above on the Layout instead of the TextView. You would then put your TextView inside the container and set the container's gravity to "center".

Hope this helps point you in the right direction :)

静赏你的温柔 2024-10-13 10:53:12

您可以尝试这个(伪代码):

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

You can try this (pseudo-code):

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

You might have to have the LinearLayout as width="fill_parent". Not sure if that will work nor not. You can subsequently try some of the things listed here: http://thinkandroid.wordpress.com/2010/01/14/how-to-position-views-properly-in-layouts/

零崎曲识 2024-10-13 10:53:12

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

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

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

Try declaring the TextView first, then aligning the button to the left of the text view. Keep in mind you may run into issues if the TextView becomes too wide.

EDIT: I see, so you're trying to do something sort of like the iPhone's header with back/next buttons (similar anyway). Try this modification. I still believe you're going to run into issues if the TextView gets large enough to hit the Button, though.

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

Try this FrameLayout instead. This may do more what you're expecting:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文