2014-01-14 2 views
0

У меня есть следующий макет. У меня есть изображения в соответствующих папках ldpi, mdpi, hdpi и xhdpi. Я не понимаю, почему макет не масштабируется до соответствующего размера. Я добавил ScrollView, так что, по крайней мере, вы можете прокручивать, чтобы увидеть весь макет, но это не желаемый эффект. Я хотел бы, чтобы весь контент был видимым при любых размерах и плотностях без прокрутки. Я прочитал документы Android по поддержке нескольких размеров и плотности, но я не понимаю, куда идти отсюда. Я использую команды «adb shell am display-density» и «adb shell am display-size» для эмуляции разных устройств на моем Nexus 10. Спасибо заранее.Размер макета Android и плотность экрана

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<RelativeLayout 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="@drawable/bg" > 

<View 
    android:id="@+id/viewSpacer0" 
    android:layout_width="1dp" 
    android:layout_height="7dip" 
    android:layout_centerHorizontal="true" /> 

<LinearLayout 
    android:id="@+id/linearLayoutLine1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:orientation="horizontal" 
    android:layout_below="@+id/viewSpacer0" > 

<ImageView 
    android:id="@+id/imageLogo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:scaleType="fitCenter" 
    android:src="@drawable/logo_large" /> 

<View 
    android:id="@+id/viewSpacer1" 
    android:layout_width="20dp" 
    android:layout_height="1dip" /> 

<ImageView 
    android:id="@+id/imageView50Best" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:adjustViewBounds="true" 
    android:src="@drawable/fifty_best_logo" /> 

</LinearLayout> 

<View 
    android:id="@+id/viewSpacer2" 
    android:layout_width="1dp" 
    android:layout_height="10dip" 
    android:layout_below="@+id/linearLayoutLine1" 
    android:layout_centerHorizontal="true" /> 

<TableLayout 
    android:id="@+id/tableLayoutHeader" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/viewSpacer2" 
    android:layout_centerHorizontal="true" 
    android:background="@color/transparent" > 

<TableRow 
    android:id="@+id/tableRowPhoneNumberLabels" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<TextView 
    android:id="@+id/textViewHospital" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Hospital" 
    android:textSize="20sp" 
    android:textColor="@color/white" /> 

<View 
    android:id="@+id/viewSpacerBetweenLabels" 
    android:layout_width="15dp" 
    android:layout_height="1dip" 
    android:layout_below="@+id/tableLayoutHeader" 
    android:layout_centerHorizontal="true" /> 

<TextView 
    android:id="@+id/textViewEmergencyRoom" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Emergency Room" 
    android:textSize="20sp" 
    android:textColor="@color/white" /> 

</TableRow> 

<TableRow 
    android:id="@+id/tableRowPhoneNumbers" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<TextView 
    android:id="@+id/textViewHospitalSwitchboard" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="(xxx) xxx-xxxx" 
    android:textSize="20sp" 
    android:textColor="@color/white" /> 

<View 
    android:id="@+id/viewSpacerBetweenPhoneNumbers" 
    android:layout_width="15dp" 
    android:layout_height="1dip" 
    android:layout_below="@+id/tableLayoutHeader" 
    android:layout_centerHorizontal="true" /> 

<TextView 
    android:id="@+id/textViewEmergencyPhone" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="(xxx) xxx-xxxx" 
    android:textSize="20sp" 
    android:textColor="@color/white" /> 

</TableRow> 

</TableLayout> 

<View 
    android:id="@+id/viewSpacer3" 
    android:layout_width="1dp" 
    android:layout_height="15dip" 
    android:layout_below="@+id/tableLayoutHeader" 
    android:layout_centerHorizontal="true" /> 

<TableLayout 
    android:id="@+id/tableLayoutMenu" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/viewSpacer3" 
    android:layout_centerHorizontal="true" 
    android:background="@color/transparent" > 

<TableRow 
    android:id="@+id/tableRow1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<ImageButton 
    android:id="@+id/imageDrSearch" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:src="@drawable/icon_dr_search" /> 

<ImageButton 
    android:id="@+id/imageLocations" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:src="@drawable/icon_locations" /> 

</TableRow> 

<TableRow 
    android:id="@+id/tableRow2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<ImageButton 
    android:id="@+id/imageSendCard" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:src="@drawable/icon_send_card" /> 

<ImageButton 
    android:id="@+id/imageServices" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:src="@drawable/icon_services" /> 

</TableRow> 

<TableRow 
    android:id="@+id/tableRow3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<ImageButton 
    android:id="@+id/ImageHealthEncyclopedia" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:src="@drawable/icon_health_encyclopedia" /> 

<ImageButton 
    android:id="@+id/imageClassesEvents" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:src="@drawable/icon_events_classes" /> 

</TableRow> 

<TableRow 
    android:id="@+id/tableRow4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<ImageButton 
    android:id="@+id/imageCareers" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:src="@drawable/icon_careers" /> 

<ImageButton 
    android:id="@+id/imageNewsroom" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:src="@drawable/icon_newsroom" /> 

</TableRow> 

</TableLayout> 

<View 
    android:id="@+id/viewSpacer4" 
    android:layout_width="1dp" 
    android:layout_height="5dip" 
    android:layout_below="@+id/tableLayoutMenu" 
    android:layout_centerHorizontal="true" /> 

<LinearLayout 
    android:id="@+id/linearLayoutLine3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@+id/viewSpacer4" 
    android:background="@color/lightgrey" > 

<ImageButton 
    android:id="@+id/imageViewWebsite" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_medium" 
    android:src="@drawable/www_small" /> 

<ImageButton 
    android:id="@+id/imageViewFacebook" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_medium" 
    android:src="@drawable/facebook_small" /> 

<ImageButton 
    android:id="@+id/imageViewTwitter" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_medium" 
    android:src="@drawable/twitter_small" /> 

</LinearLayout> 

</RelativeLayout> 

</ScrollView> 

Обновлено после предложений Ликование в:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/bg" > 

<View 
    android:id="@+id/viewSpacer0" 
    android:layout_width="1dp" 
    android:layout_height="7dip" 
    android:layout_centerHorizontal="true" /> 

<LinearLayout 
    android:id="@+id/linearLayoutLine1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:orientation="horizontal" 
    android:layout_below="@+id/viewSpacer0" > 

<ImageView 
    android:id="@+id/imageLogo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="2" 
    android:scaleType="center" 
    android:src="@drawable/logo_large" /> 

<View 
    android:id="@+id/viewSpacer1" 
    android:layout_weight="1" 
    android:layout_width="20dp" 
    android:layout_height="1dip" /> 

<ImageView 
    android:id="@+id/imageView50Best" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="2" 
    android:adjustViewBounds="true" 
    android:src="@drawable/fifty_best_logo" /> 

</LinearLayout> 

<TableLayout 
    android:id="@+id/tableLayoutHeader" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/linearLayoutLine1" 
    android:layout_centerHorizontal="true" 
    android:background="@color/transparent" > 

<TableRow 
    android:id="@+id/tableRowPhoneNumberLabels" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<TextView 
    android:id="@+id/textViewHospital" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Hospital" 
    android:layout_weight="2" 
    android:textSize="20sp" 
    android:textColor="@color/white" /> 

<View 
    android:id="@+id/viewSpacerBetweenLabels" 
    android:layout_width="15dp" 
    android:layout_height="1dip" 
    android:layout_weight="1" 
    android:layout_below="@+id/tableLayoutHeader" /> 

<TextView 
    android:id="@+id/textViewEmergencyRoom" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Emergency Room" 
    android:layout_weight="2" 
    android:textSize="20sp" 
    android:textColor="@color/white" /> 

</TableRow> 

<TableRow 
    android:id="@+id/tableRowPhoneNumbers" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<TextView 
    android:id="@+id/textViewHospitalSwitchboard" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="(xxx) xxx-xxxx" 
    android:textSize="20sp" 
    android:layout_weight="2" 
    android:textColor="@color/white" /> 

<View 
    android:id="@+id/viewSpacerBetweenPhoneNumbers" 
    android:layout_width="15dp" 
    android:layout_height="1dip" 
    android:layout_below="@+id/tableLayoutHeader" 
    android:layout_weight="1" 
    android:layout_centerHorizontal="true" /> 

<TextView 
    android:id="@+id/textViewEmergencyPhone" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="(xxx) xxx-xxxx" 
    android:textSize="20sp" 
    android:layout_weight="2" 
    android:textColor="@color/white" /> 

</TableRow> 

</TableLayout> 

<View 
    android:id="@+id/viewSpacer3" 
    android:layout_width="1dp" 
    android:layout_height="15dip" 
    android:layout_below="@+id/tableLayoutHeader" 
    android:layout_centerHorizontal="true" /> 

<TableLayout 
    android:id="@+id/tableLayoutMenu" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/viewSpacer3" 
    android:layout_centerHorizontal="true" 
    android:background="@color/transparent" > 

<TableRow 
    android:id="@+id/tableRow1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<ImageButton 
    android:id="@+id/imageDrSearch" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:scaleType="center" 
    android:layout_weight="1" 
    android:src="@drawable/icon_dr_search" /> 

<ImageButton 
    android:id="@+id/imageLocations" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:scaleType="center" 
    android:layout_weight="1" 
    android:src="@drawable/icon_locations" /> 

</TableRow> 

<TableRow 
    android:id="@+id/tableRow2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<ImageButton 
    android:id="@+id/imageSendCard" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:scaleType="center" 
    android:layout_weight="1" 
    android:src="@drawable/icon_send_card" /> 

<ImageButton 
    android:id="@+id/imageServices" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:scaleType="center" 
    android:layout_weight="1" 
    android:src="@drawable/icon_services" /> 

</TableRow> 

<TableRow 
    android:id="@+id/tableRow3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<ImageButton 
    android:id="@+id/ImageHealthEncyclopedia" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:scaleType="center" 
    android:layout_weight="1" 
    android:src="@drawable/icon_health_encyclopedia" /> 

<ImageButton 
    android:id="@+id/imageClassesEvents" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:scaleType="center" 
    android:layout_weight="1" 
    android:src="@drawable/icon_events_classes" /> 

</TableRow> 

<TableRow 
    android:id="@+id/tableRow4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" > 

<ImageButton 
    android:id="@+id/imageCareers" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:scaleType="center" 
    android:layout_weight="1" 
    android:src="@drawable/icon_careers" /> 

<ImageButton 
    android:id="@+id/imageNewsroom" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_xsmall" 
    android:scaleType="center" 
    android:layout_weight="1" 
    android:src="@drawable/icon_newsroom" /> 

</TableRow> 

</TableLayout> 

<View 
    android:id="@+id/viewSpacer4" 
    android:layout_width="1dp" 
    android:layout_height="5dip" 
    android:layout_below="@+id/tableLayoutMenu" 
    android:layout_centerHorizontal="true" /> 

<LinearLayout 
    android:id="@+id/linearLayoutLine3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@+id/viewSpacer4" 
    android:background="@color/lightgrey" > 

<ImageButton 
    android:id="@+id/imageViewWebsite" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_medium" 
    android:layout_weight="5" 
    android:src="@drawable/www_small" /> 

<ImageButton 
    android:id="@+id/imageViewFacebook" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_medium" 
    android:layout_weight="5" 
    android:src="@drawable/facebook_small" /> 

<ImageButton 
    android:id="@+id/imageViewTwitter" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent" 
    android:padding="@dimen/padding_medium" 
    android:layout_weight="5" 
    android:src="@drawable/twitter_small" /> 

</LinearLayout> 

+0

Возможно, img на ваших ресурсах/drawable-xxx не имеет правильного масштабирования: /, я также обнаружил, что это проблема в одном из моих проектов, сегодня я тестирую этот плагин для фотошоп (http: //www.cutandslice. me /), чтобы помочь мне с проблемами с размером ресурсов – GhostDerfel

+0

Возможно, вы также захотите проверить, что верный размер экрана и значения DPI возвращаются во время выполнения, если ваши команды adb игнорируются. – TheIT

+0

@ THEIT - Спасибо за комментарий. Как мне это сделать? Размер экрана меняется после запуска команд adb. –

ответ

1

Различные ресурсы в * Щелкните папки счета только для плотности экрана, а не размер экрана. Ресурсы вашего изображения будут по-прежнему иметь некоторый внутренний размер: они могут быть слишком большими или слишком маленькими для пространства, которое вы хотели бы, чтобы они соответствовали размеру экрана. Существуют опции для предоставления ресурсов на основе размера экрана (маленький, обычный, большой, xlarge), но эти папки делят только экраны на ведра. Каждое ведро будет по-прежнему иметь разные размеры экрана, они просто будут ближе друг к другу. Поэтому невозможно обеспечить точно правильный размер ресурсов для каждого экрана. Вместо этого вам нужно сказать, что ваш макет подходит для масштабирования. Например, прямо сейчас, с android:layout_height="wrap_content",, вы сообщаете свой RelativeLayout на верхнем уровне, что вы хотите, чтобы он был до тех пор, пока он должен быть, даже если он распространяется за кадром. Вместо этого вы должны удалить вид прокрутки и использовать android:layout_height="match_parent", чтобы привязать его к размеру вашего экрана. Внутри LinearLayouts используйте android:layout_weight, чтобы определить, какие объекты занимают пустое пространство. В ImageViews используйте android:scaleType, чтобы определить, как ваше изображение должно масштабироваться.

+0

Большое спасибо за ваш совет. Я играл с макетом. См. Сообщение выше для моих изменений. Он немного улучшился, но я все еще далеко. Любые другие предложения? –

+0

Что в этом плохого? Возможно, вы захотите изменить свой относительный макет на линейный макет и использовать весы для всех своих детей. У вас также может быть слишком много материала для небольших экранов. – GLee

+0

Маленькие и обычные экраны (определенные на http://developer.android.com/guide/practices/screens_support.html как «Таблица 3») имеют нижнюю и боковую поверхности. Нижняя часть обрезана на некоторых больших размерах экрана. Как сделать макет полностью видимым на всех размерах? –

Смежные вопросы