2011-09-22 20 views
0

Text failing to alignTextView的失敗很難alignTop和alignBottom

「太陽紅」應該對齊到圖像的頂部,而「下午」應該對準底部。爲什麼屬性layout_alignTop和layout_alignBottom不像記錄那樣工作?

<RelativeLayout 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_margin="9dp"> 
     <ui.RoundedImageView 
     android:id="@+id/img_user" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="9dp" 
     st:cornerRadius="3" 
     android:background="@drawable/black_rounded3" /> 
     <TextView 
       android:id="@+id/uname" 
       android:layout_toRightOf="@id/img_user" 
       android:layout_alignTop="@id/img_user" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textColor="#000000" 
       android:textStyle="bold" /> 
     <TextView 
       android:id="@+id/time" 
       android:layout_toRightOf="@id/img_user" 
       android:layout_alignBottom="@id/img_user" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textColor="#909191" /> 

     <LinearLayout 
       android:id="@+id/layout_g" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="9dp" 
       android:layout_marginLeft="9dp" 
       android:layout_alignParentRight="true" 
       android:clickable="true" 
       android:gravity="right"> 
       <TextView 
         android:gravity="right" 
         android:layout_gravity="right" 
         android:id="@+id/gtext" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         style="@style/text_detail" /> 
     </LinearLayout> 
     </RelativeLayout> 
+0

你在佈局中有很多textviews,你能告訴我們哪一個對應於「太陽是紅色的」,哪一個對應於「下午2點」 – slayton

回答

3

爲什麼不屬性layout_alignTop和layout_alignBottom工作的記錄?

- >他們這樣做。

問題出在您使用的RoundedImageView對象上。我的猜測是,這是onMeasure不正確,並沒有返回適當的價值,爲自己的頂部和底部。除了知道你正在使用的這個RoundedImageView的其他信息之外,我無法真正指出你想要修復它的方向。

我改變你的代碼如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_margin="9dp"> 
    <ImageView 
    android:id="@+id/img_user" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="9dp" 

    android:background="@drawable/black" /> 
    <TextView 
      android:id="@+id/uname" 
      android:layout_toRightOf="@id/img_user" 
      android:layout_alignTop="@id/img_user" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#000000" 
      android:text="the sun is red" 
      android:textStyle="bold" /> 
    <TextView 
      android:id="@+id/time" 
      android:layout_toRightOf="@id/img_user" 
      android:text="2pm" 
      android:layout_alignBottom="@id/img_user" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#909191" /> 

    <LinearLayout 
      android:id="@+id/layout_g" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="9dp" 
      android:layout_marginLeft="9dp" 
      android:layout_alignParentRight="true" 
      android:clickable="true" 
      android:gravity="right"> 
      <TextView 
        android:gravity="right" 
        android:layout_gravity="right" 
        android:id="@+id/gtext" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        /> 
    </LinearLayout> 
    </RelativeLayout> 

它正確對齊文本。下面是截圖:

enter image description here

+0

感謝,有見地的,現在將審查。 – hunterp

+0

爲什麼頂部和底部之間有空間?我問另一個問題:http://stackoverflow.com/questions/7524166/why-is-there-a-gap-when-i-aligntop – hunterp

0

我有一個自定義的視圖(在我的情況下,從android.view.View直接繼承)類似的問題和RelativeLayout

我沒有覆蓋onMeasure()方法,並使用我在onDraw()中獲得的畫布來寫入我的圖形。圖形輸出完全正常,但RelativeLayout中的其他視圖的對齊方式不起作用,如此處所述。

它終於證明我的構造函數沒有正確調用超類的構造函數(我忘記了通過AttributeSet)。在我將構造函數的第一行更改爲

public MyNewView (Context context, AttributeSet attrs) { 
    super(context, attrs); 
    ... 
} 

突然之間一切正常。

好像Android的佈局算法的一些魔力已經在調用onMeasure()之前的android.View.view的構造函數中發生了。