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 имеет установите значение. Но это не изменилось. Должен ли я выполнить некоторые другие действия после того, как я установил параметр layout? Потому что, если я установил значение силы тяжести в RIGHT в условии if, оно не отображается на моем экране. Но если я прокручу вниз и снова, он изменился на правую сторону, но все же не так, как я ожидал, различную позицию для каждого раздела. Все секции в этом случае пошли направо ...
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();
}
Что делает ваш 'заголовок'? –
@GokhanArik Извините, я не дал понять, посмотрю мои обновления. Заголовок, который я считаю, является RelativeLayout. – zoujyjs
Используете ли вы этот макет в каждой строке «ListView»? Также как выглядит 'headerView'? – Luksprog