2014-01-10 1 views
0

В моем приложении используются кнопки и кнопки изображений, созданные через XML и папку с возможностью перемещения.
В некоторых устройствах элементы пользовательского интерфейса (кнопки и кнопки изображений) теряют свое положение и перекрываются друг с другом, а на некоторых устройствах последняя кнопка в нижней части экрана исчезает.
То же самое происходит при изменении ориентации.То же место для элементов пользовательского интерфейса (кнопки, кнопки изображения) на всех устройствах Android.

Я хочу, чтобы все мои элементы находились в одном положении на всех устройствах.
Как это сделать с помощью XML.
Есть ли простой и простой способ сделать это?
Вот мой XML.

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

    <ImageButton 
     android:id="@+id/main_btn_1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="55dp" 
     android:layout_marginTop="71dp" 
     android:background="#ffffff" 
     /> 

    <ImageButton 
     android:id="@+id/main_btn_2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@+id/main_btn_1" 
     android:layout_marginRight="56dp" 
     android:background="#000000" 
     /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/main_btn_1" 
     android:layout_below="@+id/main_btn_1" 
     android:textColor="#00aeed" 
     android:textStyle="normal" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView1" 
     android:layout_alignBottom="@+id/textView1" 
     android:layout_alignLeft="@+id/main_btn_2" 
     android:textColor="#ea1d24" 
     android:textStyle="normal" /> 

    <ImageButton 
     android:id="@+id/main_btn_3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView1" 
     android:layout_below="@+id/textView1" 
     android:layout_marginTop="42dp" 
     android:background="#000000" 
     /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/main_btn_3" 
     android:layout_below="@+id/main_btn_3" 
     android:textColor="#f7941d" 
     android:textStyle="normal" /> 

    <ImageButton 
     android:id="@+id/main_btn_4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView2" 
     android:layout_alignTop="@+id/main_btn_3" 
     android:background="#000000" 
     /> 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/main_btn_4" 
     android:layout_below="@+id/main_btn_4" 
     android:textColor="#f7941d" 
     android:textStyle="normal" /> 

    <ImageButton 
     android:id="@+id/main_btn_5" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView4" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="12dp" 
     android:background="#000000" 
     /> 

    <TextView 
     android:id="@+id/textView5" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/main_btn_5" 
     android:layout_centerHorizontal="true" 
     android:gravity="center_horizontal" 
     android:textColor="#0065b3" 
     android:textStyle="normal" /> 

</RelativeLayout> 
+0

Вы используете графику с поддержкой разрешения? –

+0

Да, я использовал 9 патчей для каждого изображения –

ответ

0

Поскольку есть много устройств с таким количеством различных размерами экрана, резолюциями и т.д., вероятно, главное, вы должны избегать используют абсолютные позиции при размещении элементов макета. Android SDK имеет несколько мощных структур, чтобы избежать абсолютного позиционирования (например, LinearLayout, RelativeLayout), поэтому попробуйте работать с ними и вместо определения позиций типа «12dp» ​​используйте правильную комбинацию layout_width, layout_height (wrap_content или match_parent) и layout_weight, что может помочь вам разместить элементы макета без указания абсолютных позиций.

+0

В фактах он использует RelativeLayout со всеми позициями относительно друг друга (alignTop, toLeftOf, alignParentRight, ... все ОТНОСИТЕЛЬНОЕ позиционирование - не абсолютное). –

+0

Но он использует 'wrap_content' во всех из них вместо параметра' layout_weight', который поможет нормализовать макет на большинстве устройств. – nKn

+0

Я тоже пробовал этот подход, но не смог заставить его работать. Как я хочу, чтобы кнопка первого изображения (main_btn_1) была помещена на 2 или 5 пикселей слева, я не могу сделать это с помощью dp. Если есть какой-либо способ, предложите –

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