2009-09-30 7 views
15

私は本当にこの上に私の髪を引っ張っています。いくつかの背景。私はそれらの隣にチェックボックスを持つアイテムのリストを持っています。チェックボックスの選択を解除すると、リストから項目を削除できるボタンが表示されます。カスタムレイアウトのためのRelativeLayoutを中心としたAndroidのレイアウト

<RelativeLayout android:id="@+id/rlBlahBlah" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:minHeight="?android:attr/listPreferredItemHeight" 
       xmlns:android="http://schemas.android.com/apk/res/android"> 
    <CheckBox android:text="" 
      android:id="@+id/cbDeleteItem" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:focusable="false" 
      /> 
    <TextView android:text="" 
      android:id="@+id/tvItemText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="14dip" 
      android:paddingLeft="3dip" 
      android:paddingRight="3dip" 
      android:paddingTop="13dip" 
      android:gravity="fill_vertical" 
      android:layout_toRightOf="@id/cbDeleteItem" 
      /> 
    <Button android:layout_height="wrap_content" 
      android:id="@+id/btnDelete" 
      android:text="Delete" 
      android:layout_width="wrap_content" 
      android:layout_alignParentRight="true" 
      android:gravity="center_vertical" 
      android:focusable="false" 
      /> 
</RelativeLayout> 

は、私は3つの項目が私の命を救うために私の行に垂直中央に得ることができない:これは、最初は後方ようだが、我々は唯一の「選択」の項目は、さらに処理の対象になりたい、などこれは私のレイアウトであります。 layout_gravitygravitylayout_centerVertical、いずれも機能しません。私の問題は、どこかに転がる小さな設定だと確信していますが、私は本当にこれで終わりです。

私はtextviewが "fill_vertical"であることを知っています、それは私が試していたランダムなものです。

+0

あなたは重力が親RelativeLayoutビューに属性を適用して遊んでみましたか?試してみる価値。 – Konklone

答えて

24

あなたの問題は、おそらくレイアウトによるものではなく、どのようにレイアウトを膨らませています。実際には、それもどこにでもRomain Guyを引用する...あなたはあなたのテクニックを学んだ場所に応じて、

を私のせいかもしれません:

アダプタでのインフレートの正しい使い方は()である:

inflate(layoutId、parent、false); (getViewメソッド(中 パラメータとしてあなたに与えられた))親を渡す

は、適切な LayoutParamsオブジェクトを作成するためのUIツールキット することができます。偽 を渡すと、 のListViewが後で に独自の魔法を行いますから、 parent.addView(theInflateChild)を呼び出さないためにツールキットを伝えます。

私は伝統的に助言してきたように、あなたが、inflate(layoutId, null)を使用している場合は、行の基本レイアウトとしてRelativeLayoutを使用して試してみて、垂直方向のセンタリングを使用しようとしない限り、人生はOKです。

私は今後数週間で新しいアドバイスを反映するために本などを更新します。

+0

私は実際にあなたのテクニックを使用しています:P私はまた、RelativeLayoutがlayout_gravity属性を無視するというRomain Guyの記事を読んでいます。私は正確に私がしたいことを行う新しいレイアウトで答えを投稿しています。しかし、あなたの応答をありがとう! – MattC

+0

ありがとう、あなたは私の一日を救った! –

1

はあなたがアンドロイドみました:参照されるように重力が=「center_horizo​​ntal」をhere

+0

私はレイアウト内の垂直センタリングを探しています。 – MattC

+0

そこにはcenter_verticalもあります。 – Carnell

+0

重力は私が見つけたように自分自身の中に集中します。私が欲しかったのはlayout_gravityでしたが、Romain Guyの記事によると、RelativeLayoutはlayout_gravityを無視して終了します。 – MattC

2

ここでは、私が欲しいものを正確にやっていたレイアウトです。私はそれがlayout_gravity属性(もちろん今私はポストを見つけることができない)を無視することを学んだ後、私はRelativeLayoutを不時着しました。どちらにしても、ネストされたLinearLayoutsは私のためにトリックをした:RelativeLayoutを使用して

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:id="@+id/llBlahBlahRowMain" 
    android:padding="6dip"> 
    <CheckBox android:text="" 
       android:id="@+id/cbDeleteItem" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_vertical" 
       android:focusable="false" 
       /> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_weight="1" 
     android:layout_gravity="center_vertical" 
     android:layout_height="wrap_content"> 
     <TextView 
      android:text="blah blah dynamically replaced text" 
      android:id="@+id/tvItemText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:textSize="14dip" 
      android:paddingLeft="3dip" 
      android:layout_gravity="center_vertical" 
      /> 
    </LinearLayout> 
    <Button android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/btnDelete" 
      android:text="Delete" 
      android:layout_gravity="center_vertical" 
      android:focusable="false" 
      /> 
</LinearLayout> 
16

は、私は重力もlayout_gravityとは運がなかったです。

しかしandroid:layout_centerVertical="true"は私のRelativeLayoutの子に位置し、私のために働いていたので、あなたが必要な場合は、それを維持することができます。

+0

ビンゴ!私の問題を修正しました。ありがとう。 – user1139880

59

この属性はRelativeLayoutを使用してButtonを中心に私の仕事:

android:layout_centerInParent="true" 

がこの投稿を参照してください: Can you center a Button in RelativeLayout?

+1

ありがとうございました。時には、評価の低い回答を読む価値があります。 – tjb

+0

この回答にお答えください – Albinoswordfish

+1

本当にありがとうございます。 –

1

私は私のために働いていた別の解決策を、でした。私は、テキストボックスの要素に、android:layout_height = "fill_parent"というプロパティを設定します。このように、内容が正しく整列されたように、テキスト要素は、親のすべてのhieghtを満たした:)

<TextView android:id="@+id/principal_li_descricao" 
    android:layout_height="fill_parent" 
    android:layout_width="wrap_content" 
    android:layout_marginLeft="10dip" 
    android:textColor="#ff000000" 
    android:layout_centerVertical="true" 
    android:gravity="center_vertical" 
    android:layout_alignBottom="@+id/principal_li_icone" 
    android:layout_toRightOf="@+id/principal_li_icone"/> 

おかげ

関連する問題