Поддержка нескольких экранов на Android

#android #screen

#Android #экран

Вопрос:

Последние несколько дней я пытаюсь создать приложение, которое может настраивать экран в соответствии с изменением размера эмулятора.. Я нашел решение, которое использует несколько экранов.

но я не могу этого сделать, я воспользовался помощью этого , но не могу понять, как я могу setContentView(R.layout.main); ? потому что, когда я нажимаю.(точка) после R этого мне не отображаются папки ниже ..: (я создал 3 папки с именами layout-large , layout-small и layout-large-land под res папкой в моем приложении для Android

я добавил это в свой файл манифеста..

 <supports-screens
          android:largeScreens="true"
          android:normalScreens="true"
          android:smallScreens="true"       
          android:anyDensity="true" />
  

введите описание изображения здесь

чего мне здесь не хватает? я использую Android 1.6, заранее спасибо
вопрос в том, должен ли я также предоставлять этот main.xml файл по умолчанию layout folder ? да, тогда это не влияет на размер экрана, нет, тогда это принудительно закрывает мое приложение, которое я также пробовал использовать API level 7 , но проблема остается прежней
это мой XML-файл

 <?xml version="1.0" encoding="utf-8"?>



<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:id="@ id/rl"
    android:layout_height="360dip">
    <!--
        <WebView android:id="@ id/webviewHelp"
        android:layout_width="fill_parent"
    -->
    <!--        android:layout_height="fill_parent" />-->
    <WebView android:id="@ id/webviewHelp" android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
    <Button android:id="@ id/My_btn"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" android:gravity="center"
        android:textSize="8px" android:text="Download this mp3 file"
        android:textColor="@color/white" android:layout_width="fill_parent"
        android:layout_height="28dip" android:visibility="invisible" />
    <Button android:id="@ id/My_btn1"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" android:text="this is button !"
        android:layout_width="0dip" android:layout_height="0dip"
        android:visibility="invisible" />


</RelativeLayout>
  

Комментарии:

1. setContentView (R.layout.main) будет таким же. В зависимости от размера эмулятора Android выберет, какую папку использовать.

2. Он не покажет вам никакого имени папки, кроме макета по умолчанию, и это не ваша головная боль, Android автоматически выберет соответствующую папку

3. Я полностью согласен с @Rosalie, android справится с этим за вас, просто укажите XML-файл с тем же именем в этой папке.

Ответ №1:

Пожалуйста, добавьте несколько XML-файлов макета в эти папки, прежде чем вводить точку после R 🙂 Сами папки не генерируют идентификаторы ресурсов, но XML-файлы в них генерируют.

Комментарии:

1. но этот файл также должен находиться в папке m layout? в противном случае приложение принудительно закрывается, и если я предоставляю, то оно принимает это и не отображает никаких изменений при изменении на экране просмотра моего обновленного кода

2. Вы помещаете разные файлы макета в разные папки, и среда выполнения Android выбирает в папке тот, имя которого соответствует показателям отображения экрана текущего устройства и ориентации. Например: setContentView(R.layout.main); загрузит main.xml в папке layout-large-port , если устройство имеет большой экран и в данный момент находится в книжной ориентации, или в макете папки-small-land, если оно имеет маленький экран и в данный момент находится в альбомной ориентации. Android выдает исключение в обоих случаях, если не может найти файл с именем main.xml в нужной папке.

Ответ №2:

Я не уверен, что это то, что вы имели в виду, но у меня это сработало: ScalingLinearLayout