2010-12-07 16 views
2

私は以前これをやったと確信していますが、どうやって忘れてしまったのですか。ボタンの右側にTextViewを配置して中央揃えしますか?

ここに問題があります: 私はボタンとテキストビューを持っており、ボタンは左側にありますが、テキストビューを中央に揃えたいと思っています。

問題はありませんか?それらを相対的な位置に配置し、テキストビューを中央にし、ボタンをalignparentleftにします。

しかし、私は動的にテキストを変更しようとしているので、ボタンの上に書き込むことができます!私はちょうどtoRightOf = "@ id/button"をtextviewに追加します。いや、それはもはや中心に置かれていません。

私はスクリーンショットを提供したいと思いますが、コンピュータのメモリが不足していると思われます。ここで

は、いくつかのコードです:(?私は、XMLを貼り付けることはできませんので...) http://pastebin.com/3N70Vjre

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

水平または垂直のセンタリングについて話していますか?どちらがうまくいっていて、どちらはどちらですか? – mibollma

+0

私は水平センタリングについて話しています。 relativelayout内の垂直方向のセンタリングはうまくいきます。 – AmITheRWord

答えて

3

はこれを試してみてください(残念ながら私は、Eclipseにジャンプすることはできませんので、仕事でよあなたにいくつかのコードを取得する) -

  • 変更のlayout_widthをfill_parentへのTextView。 1へのボタンのlayout_weight、あなたがこれらの番号をごまかすする必要があります。2.ノートへのTextViewのlayout_weightを設定し、中心までのTextViewの重力(TextViewの内部ので、テキスト・センター)
  • を設定
  • あなたが探しているレイアウトを取得します。

これは、TextView自体を中央に配置しなくても、TextViewのテキストの中央に配置する必要があります。 TextViewをコンテナ(Linear/Relative Layout)で置き換え、TextViewではなくLayout上で同じメソッドを実行することで、これを実現できます。次に、TextViewをコンテナ内に配置し、コンテナの重力を「中心」に設定します。

これは正しい方向に向けるのに役立ちます:)

+0

ありがとうございます。私はそれを半分稼働させることができました。あなたは私の解決策に最も近いので、私はあなたに答えを与えるつもりです。 – AmITheRWord

0

、テキストビューの左側にあるボタンを合わせ、最初のTextViewを宣言してください。 TextViewが広すぎると問題が発生する可能性があることに注意してください。

EDIT: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> 
+0

これは、テキストビューのすぐ隣にボタンを置き、その両方を中央に配置します。今、ボタンのalignParentLeft = "true"を設定すると、ボタンはテキストビューに達するまで伸びます。また、テキストビューが広すぎると、ボタンが押し出されます。ちょうど私の問題を元に戻しました。P – AmITheRWord

+0

なぜこれをやろうとしているのか正確に説明できますか?このインスタンスが動作するかどうかに関係なく、このタイプのレイアウトの問題に遭遇するようです。 – kcoppock

+0

これは:http://img801.imageshack.us/img801/4372/tablelayout.pngマイナス私のレイアウトの右ボタンは、テキストビューをボタンのすぐ隣にマッシュさせ、パディングや余白を押してそれを押して。 – AmITheRWord

0

あなたは、この(擬似コード)を試すことができます。

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

あなたがのLinearLayout幅=「fill_parent」などを持っている必要があります。それがうまくいくかどうかは分かりません。あなたはその後、ここに記載されているもののいくつかを試すことができます:http://thinkandroid.wordpress.com/2010/01/14/how-to-position-views-properly-in-layouts/

+0

これはうまくいきません。そして、そうした場合、テキストビューはRelativelayoutの内部ではなく、Linearlayoutの内側に水平に配置されます。中央+ボタンの幅です。たぶんボタンの幅を取得し、それをテキストビューの左の余白から引く方法がありますか? :\ – AmITheRWord

+0

幅がfill_parentでない場合。 LinearLayoutは、残りの水平スペースを塗りつぶし、その内部にTextViewを中央に配置します。 – methodin

+0

はい、ボタンを含んでいない部分だけを塗りつぶすことができます。 – AmITheRWord

関連する問題