2013-06-19 63 views
2

This question與我的類似,但沒有建設性的答案。setGravity不適用於RelativeLayout

我想做一個列表中的標題視圖的簡單切換。我希望第一部分的頭部位於左側,第二部分的頭部位於右側。這頭視圖的佈局是一個RelativeLayout的如下:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/location_list_pinned_header" 
    android:layout_width="fill_parent" 
    android:layout_height="32dip" 
    android:background="#505050" 
    android:clickable="true" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/zlocation_list_header_text" 
     android:layout_width="40dip" 
     android:layout_height="32dip" 
     android:layout_gravity="top" 
     android:gravity="center" 
     android:paddingTop="2dip" 
     android:textColor="#000000" 
     android:textSize="16sp" /> 

</RelativeLayout> 

而我在Java代碼中做的是:

RelativeLayout header = (RelativeLayout) headerView.findViewById(R.id.location_list_pinned_header); 
    if (section%2 == 0) { 
     ((TextView) headerView.findViewById(id)) 
       .setText(title);//set the section title, may be like "Feb" "Jan" 
     header.setGravity(Gravity.LEFT);//I am sure it is been set, I see the mGravity of RelativeLayout changed in debug mode 
    } 
    else { 
     ((TextView) headerView.findViewById(id)) 
       .setText(title); 
     header.setGravity(Gravity.RIGHT); 
    } 

正如我在評論中這樣說,我相信setGravity有設置值。但它沒有改變。在設置佈局參數後,我應該執行其他一些操作嗎?因爲如果我在if子句中將重力設置爲RIGHT,它不會顯示在我的屏幕中。但是如果我再次向下滾動,它會變成右側,但仍然不如我預期的那樣,每個部分的位置不同。在這種情況下,所有的部分去了吧...

headerView是一種觀點,即持有的RelativeLayout:

mDisPlay.setPinnedHeaderView(LayoutInflater.from(mContext).inflate(
        R.layout.zlocation_list_section_header, mDisPlay, false)); 

將設置標題視圖,mDisPlay是列表,就像我之前說的。此代碼中使用的佈局顯示在代碼的第一段摘錄中。以下是setPinnedHeaderView

public void setPinnedHeaderView(View view) { 
    mHeaderView = view; 
    if (mHeaderView != null) { 
     setFadingEdgeLength(0); 
    } 
    System.out.println("setPinnedHeaderView"); 

    requestLayout(); 
} 
+0

你的'header'是什麼? –

+0

@GokhanArik對不起,我沒有說清楚,看看我的更新。標題我認爲是RelativeLayout。 – zoujyjs

+0

你是否在'ListView'的每一行都使用該佈局?另外'headerView'看起來像什麼? – Luksprog

回答

2

注意RelativeLayout沒有取向性的方法;從你的XML中刪除這個。

但是,我不明白爲什麼你需要在這裏頭的RelativeLayout父;爲什麼不使用LinearLayout?說出這個垂直方向,然後設定它的重力。

如果你可以完全消除父母的佈局,那就更好了。這隻有一個孩子。

+0

此外,'android:layout_gravity =「top」'不屬於[RelativeLayout's params] – mdelolmo

+0

這也是另一個例子。 – SK9

+1

將其更改爲LinearLayout並將其設置爲**水平**方向後,即可解決問題。 – zoujyjs

相關問題