2

私は以前にこれを行ったことがあると確信していますが、その方法を忘れてしまいました。

問題は次のとおりです。ボタンとテキストビューがあり、ボタンが左側にあるときにテキストビューを中央に配置したいと思います。

問題ない?それらをrelativelayoutに配置し、textviewをcenterinparentにし、ボタンをalignparentleftにします。

しかし、今度はテキストを動的に変更するので、ボタンの上にテキストを書き込むことができる可能性があります。テキストビューに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自体は中央に配置されませんが、TextViewのテキストはボタンの中央に配置されます。これを実現するには、TextViewをコンテナ(線形/相対レイアウト)に置き換え、TextViewの代わりにレイアウトで上記と同じ方法を実行します。次に、TextViewをコンテナ内に配置し、コンテナの重力を「中心」に設定します。

これがあなたを正しい方向に向けるのに役立つことを願っています:)

于 2010-12-07T16:51:56.877 に答える
0

最初に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>
于 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 に答える