У меня возникает необычная ошибка с файлом макета XML при создании приложения при настройке уровня API на уровне 18. Это не происходит с уровнем API 17. Я запускаю приложение на устройствах Android 4.3, и ошибка сохраняется на всех трех устройствах.Странная ошибка компоновки XML при таргетинге на Android 4.3
Вот как это выглядит:
API 17 (правильный):
API 18 (неверный):
Я м, используя StickyGridHeaders library, и следующий мой getHeaderView()
метод:
@Override
public View getHeaderView(int position, View convertView, ViewGroup parent) {
RowItem holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.seasons_row_header, parent, false);
holder = new RowItem();
holder.title = (TextView) convertView.findViewById(R.id.seasonTitle);
holder.episodeCount = (TextView) convertView.findViewById(R.id.episodeCount);
convertView.setTag(holder);
} else {
holder = (RowItem) convertView.getTag();
}
if (seasons.get(position).equals("00")) {
holder.title.setText(R.string.stringSpecials);
} else {
holder.title.setText(getString(R.string.showSeason) + " " + seasons.get(position));
}
int size = seasonEpisodeCount.get(Integer.valueOf(seasons.get(position)));
holder.episodeCount.setText(size + " " + getResources().getQuantityString(R.plurals.episodes, size, size));
convertView.setClickable(false);
convertView.setFocusable(false);
return convertView;
}
Вот макет XML-файл:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#80000000"
android:padding="@dimen/list_padding" >
<TextView
android:id="@+id/seasonTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginRight="@dimen/list_padding"
android:layout_toLeftOf="@+id/episodeCount"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textIsSelectable="false"
android:textStyle="bold" />
<TextView
android:id="@+id/episodeCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/seasonTitle"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/seasonTitle"
android:gravity="bottom"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textIsSelectable="false" />
</RelativeLayout>
Кто-нибудь еще есть ключ к пониманию того, что здесь происходит? Мне очень странно, что он работает при настройке уровня API на уровне 17 и не работает при таргетинге на новейший уровень API (18).
Update:
Это то, что это выглядит как в визуальном редакторе макета с Android 4.3 в качестве цели:
Вы пытались удалить это: android: layout_toLeftOf = "@ + id/episodeCount" Я знаю, что иногда перекрестные ссылки ссылаются на странное поведение ... – TacB0sS
Я просто попробовал. Это заставляет TextView появляться, но другой отображается поверх него :-( –
Его начало ... :) Попробуйте удалить «+» из обоих символов @ + id/seasonTitle в эпизодеCount textview – TacB0sS