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();
}
你的'header'是什麼? –
@GokhanArik對不起,我沒有說清楚,看看我的更新。標題我認爲是RelativeLayout。 – zoujyjs
你是否在'ListView'的每一行都使用該佈局?另外'headerView'看起來像什麼? – Luksprog