#android #layout #screen-size
#Android #макет #размер экрана
Вопрос:
В моем Android-проекте со стандартным макетом все работает нормально, однако всякий раз, когда я добавляю новый подкаталог layout-xxx, скажем layout-large, и копирую в него XML-файл, который будет моим исходным кодом для нового размера, о котором идет речь, с этого момента я получаю ошибку, указанную выше, и проект не будет компилироваться.
Столкновение файлов Location TypeClass: ресурс существует с другим регистром: ‘R $ID.class ‘
Если я удалю XML-файл из каталога layout-xxx, все вернется к нормальной работе. У меня действительно есть теги экрана поддержки в манифесте.
Возможно, мне не нужно идентифицировать все мои представления и тому подобное внутри моего макета с отдельными именами для отдельных файлов макета, не так ли? Это сделало бы кодирование настолько чрезмерно условным, что оно того не стоило бы.
Что я делаю не так? или отсутствует?
Комментарии:
1. Вам определенно не следует изменять идентификаторы макета; это нарушило бы точку привязки ресурса. Вы пытались очистить свой проект после копирования файла? Кроме того, можете ли вы опубликовать пример макета, который вызывает проблемы?
2. Да, я действительно запустил чистую и т.д. увы, безрезультатно. Макет представляет собой очень простой ScrollView с RelativeLayout внутри .. а затем различные виджеты.
3. @user756212: Это что-то такое же простое, как наличие TextView (например) в одном файле макета с идентификатором
textView1
и в другом файле макета с именемtextview1
? Другими словами, одно и то же имя, но отличающееся только символами верхнего / нижнего регистра.4. Нет, это не столкновение разных элементов, имеющих один и тот же идентификатор между определениями представления. Кажется, я решил это, снова скопировав XML .. но теперь у меня возникают проблемы с тем, что он не подбирает определения layout-large .. разве WVGA854 не считается большим в 2.2?
5. @user756212 — Не обязательно. Большой относится к размерам экрана, а не к разрешению. Большой экран с разрешением ldpi может иметь меньше пикселей по ширине, чем обычный экран с разрешением xhdpi. Эмулятор использует загадочную формулу (по крайней мере, я не нашел для нее никакой документации), чтобы объединить размер и плотность пикселей обложки с масштабированием дисплея для классификации эмулируемого устройства.
Ответ №1:
У меня была такая же проблема сегодня, и это было из-за моей ошибки.
Мое меню было определено следующим образом
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@ id/menu_item_share_action_provider_action_bar"
android:showAsAction="always"
android:title="@string/action_bar_share_with">
<menu >
<item android:id="@ Id/someid"
android:title="MyMenu"/>
</menu>
</item>
</menu>
Причиной ошибки был идентификатор с заглавной буквы I, который на самом деле должен быть похож на id
Надеюсь, это кому-то поможет