0

Я пытаюсь решить проблему макета - я тестировал этот res/layout/my.xml на Moto G, и все было хорошо, но когда я протестировал его на Nexus S, Кнопки были слишком большими. Я попробовал res/layout-xhdpi/my.xml (так как Moto G - xhdpi, а Nexus - только hdpi), но всегда один из макетов надувается на обоих, никогда не отличается на каждом (для xhdpi я теперь использую кнопку с текстом, чтобы я можно сразу увидеть, если он продолжал):Nexus S и Moto G - не могут отличить макеты

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FFFFFF" 
    android:orientation="vertical" 
    tools:context=".MainActivity" > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 

     <ImageView 
      android:id="@+id/imageView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:cropToPadding="true" 
      android:src="@drawable/pil2" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignLeft="@+id/button1" 
      android:layout_below="@+id/button1" 
      android:height="90dp" 
      android:minWidth="150dp" /> 

     <Button 
      android:id="@+id/button3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignLeft="@+id/button2" 
      android:layout_below="@+id/button2" 
      android:height="80dp" 
      android:minWidth="150dp" /> 

     <Button 
      android:id="@+id/button4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignLeft="@+id/button1" 
      android:layout_alignParentTop="true" 
      android:height="130dp" 
      android:minWidth="150dp" /> 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/button4" 
      android:layout_centerHorizontal="true" 
      android:height="90dp" 
      android:minWidth="150dp" /> 

    </RelativeLayout> 

    <com.google.android.gms.ads.AdView 
     android:id="@+id/adView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     ads:adUnitId="xxxx" 
     ads:adSize="BANNER" /> 

</LinearLayout> 
+0

Использование квалификаторов набора ресурсов плотности (например, '-hdpi') на любых ресурсах, отличных от ресурса, является серьезным запахом кода, так как почти уверен, что вы не получите то, что хотите. Помимо этого, используйте Hierarchy View для определения того, что в ваших правилах размещения вызывает ваши трудности. – CommonsWare

+0

Вот как это выглядит на Nexus S: http://oi58.tinypic.com/oko8l1.jpg, и так оно выглядит на Nexus 5: http://oi59.tinypic.com/1zlgjud.jpg Конечно, кнопки maade прозрачный после того, как они работают правильно. Первая кнопка сверху не имеет функции - просто placeholder вместо margingTop. Я постоянно пересматриваю свой пользовательский интерфейс, но не могу получить эту вещь, поэтому на любом устройстве он будет работать правильно. –

+0

Казалось бы, вы пытаетесь сделать «кнопки», отображаемые на этом PNG/JPEG/любом фоне, щелчком мыши. Ваш подход не будет надежным, так как кнопки не имеют ничего общего с этим общим фоном. – CommonsWare

ответ

1

В Values ​​папке есть dimen.xml файл, и есть 3 значения папки (значения, ценности-v11, значения-V14) .Если вы не есть файл dimens.xml в этих папках, тогда вы можете создать для них файл dimens.xml, поэтому вы можете указать ширину и высоту кнопок для разных устройств. Пример: - Например: - для папки значений.

<dimen name="button_width">16dp</dimen> 
<dimen name="button_height">16dp</dimen> 

Для значений-v11

<dimen name="button_width">26dp</dimen> 
<dimen name="button_height">26dp</dimen> 

Для значений-V14

<dimen name="button_width">36dp</dimen> 
<dimen name="button_height">66dp</dimen> 

Сейчас в главном XML

android:layout_width="@+dimen\button_width" 
android:layout_height="@+dimen\button_height" 

Я надеюсь, что ваша проблема будет решить.

+0

Я думаю, что это может решить проблему для этих двух устройств, но как я могу узнать сейчас, если она будет работать должным образом на других устройствах? Является ли она более связанной с API-версией проблемой или ориентированной на устройство? –

+0

Нет, он решит вашу проблему для всех типов устройств, таких как устройства hdpi, 7-дюймовые планшеты и 10-дюймовые планшеты ... –