This question
与我的相似,但那里没有建设性的答案。
我正在尝试对列表中的标题视图进行简单的切换。我希望第一部分的头在左边,第二部分的头在右边。这个head view的布局是一个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();
}