2012-12-06 29 views
4

我試圖將兩個RelativeLayouts嵌套爲ListView的行,並垂直居中嵌套佈局的內容。不管是什麼我想,我不能得到它的工作:垂直居中在ListView中的嵌套RelativeLayout

screenshot:

這是我的XML佈局,我知道這是一個有點亂(也試過LinearLayouts沒有成功):

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:descendantFocusability="blocksDescendants"> 
    <CheckBox 
     android:id="@+id/check" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_centerVertical="true" 
     android:layout_marginTop="2dp" 
     /> 
    <TextView 
     android:id="@+id/label" 
     android:layout_toRightOf="@id/check" 
     android:layout_toLeftOf="@+id/date_time_container" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_centerVertical="true" 
     android:ellipsize="end" 
     android:paddingLeft="6dp" 
     android:paddingRight="6dp" 
     android:singleLine="true" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:bufferType="spannable"> 
    </TextView> 
    <RelativeLayout 
     android:id="@+id/date_time_container" 
     android:layout_alignParentRight="true" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_centerVertical="true" 
     android:background="@color/grey" 
     > 
     <TextView 
      android:id="@+id/date_time" 
      android:layout_toLeftOf="@+id/icon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_centerVertical="true" 
      android:background="@color/green" 
      android:layout_marginTop="2dp" 
      android:bufferType="spannable" 
      android:text=""> 
     </TextView> 
     <ImageView 
      android:id="@+id/icon" 
      android:layout_toRightOf="@id/date_time" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="4dp" 
      android:layout_marginRight="0dp" 
      android:layout_marginTop="2dp" 
      android:layout_centerVertical="true" 
      android:src="@drawable/urgent" 
      android:contentDescription="@string/icon"/> 

    </RelativeLayout> 


</RelativeLayout> 

我已經確信在適配器正確充氣列,如其他線程建議:

@Override 
public View newView(Context context, Cursor cursor, ViewGroup parent) { 
    return mInflater.inflate(R.layout.task_row, parent, false);   
} 

任何想法?我相信它一定是小事。謝謝!

編輯: 在Eclipse中的佈局顯示正確,似乎嵌套一個ListView行內佈局某種程度上攪亂佈局: enter image description here

編輯2: 我想我會通過使用EditText獲得某處。但是,除非有一種方法,使其看起來同一個TextView我回到繪圖板:(

編輯3: 我終於用的LinearLayout和Android解決它:重力=「center_vertical」在TextView的。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:descendantFocusability="blocksDescendants"> 
    <CheckBox 
     android:id="@+id/check" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_marginTop="2dp" 
     /> 
    <TextView 
     android:id="@+id/label" 
     android:layout_toRightOf="@id/check" 
     android:layout_toLeftOf="@+id/date_time_container" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:ellipsize="end" 
     android:paddingLeft="6dp" 
     android:paddingRight="6dp" 
     android:singleLine="true" 
     android:text="Some text" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:bufferType="spannable"> 
    </TextView> 
    <LinearLayout 
     android:id="@+id/date_time_container" 
     android:layout_alignParentRight="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 

     android:background="@color/grey" 
     > 
     <TextView 
      android:id="@+id/date_time" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:bufferType="spannable" 
      android:singleLine="true" 
      android:gravity="center_vertical" 
      android:background="@color/green" 
      android:text="20:00" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      /> 
     <ImageView 
      android:id="@+id/icon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/urgent" 
      android:contentDescription="@string/icon"/> 

    </LinearLayout> 


</RelativeLayout> 

回答

0

嘗試根RelativeLayout內部的意見layout_height設置爲wrap_content

+0

謝謝,但我仍然得到同樣的結果,TextView的是在左上角沒有居中。 – user1883611

+0

Stran ge,我嘗試了它,它工作。請注意,存在循環依賴關係,並且必須刪除行'android:layout_toLeftOf =「@ + id/icon」'。 – yDelouis

+0

我按照你的建議改變了佈局,但它沒有改變任何東西。問題似乎是在ListView中,LayoutParams無法正常工作。我實現了SimpleCursorAdapter的一個子類,佈局在newView()中被誇大了。 eclipse中的圖形佈局選項卡正確顯示佈局。 – user1883611