2013-08-15 3 views
0

У меня проблема с моим приложением, когда расположение кнопок не равномерно распределено при использовании на разных устройствах.Расположение интервалов между кнопками Android неравномерно

Как показано на рисунке, первый снимок экрана показывает разметку, размещенную на более раннем, более мелком экранированном Android-смартфоне.

enter image description here

Второй скриншот с Nexus 4, показывает большое белое пространство под нижней кнопкой, которая является неравномерной.

enter image description here

Я думал, что я установил мой макет быть даже, но кажется, что это не.

UPDATE: Как установить вид прокрутки с двумя линейными макетами в нем.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" > 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="84dp" 
    android:orientation="horizontal" > 

    <ImageView 
     android:id="@+id/imgLink" 
     android:layout_width="78dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:src="@drawable/appointmentmanimenuicon" /> 



    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="75dp" 
     android:gravity="center" 
     android:text="Appointments" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textSize="30sp" /> 
</LinearLayout> 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:fillViewport="true"> 


    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:orientation="vertical" > 

    <Button 
     android:id="@+id/btnaddAppoint" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_margin="50dp" 
     android:drawableLeft="@drawable/appointmentmenu" 
     android:src="@drawable/appointmentmenu" 
     android:text="Add Appointment" 
     android:layout_weight="1" /> 

    </LinearLayout> 

     <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:orientation="vertical" > 
    <Button 
     android:id="@+id/btnviewAppoint" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_margin="50dp" 
     android:drawableLeft="@drawable/appointviewicon" 
     android:src="@drawable/appointviewicon" 
     android:text="View Appointments" 
     android:layout_weight="1" /> 
</LinearLayout> 
</ScrollView> 
</LinearLayout> 
+0

Любопытно, что нужно дополнительному 'ScrollView' там? –

+0

android: layout_height = "400dp" вы попробовали сделать match_parent –

+0

Если вы удалили ScrollView и присвоили внешнему LinearLayout весу, что произойдет потом? –

ответ

0

Ваш второй LinearLayout имеет фиксированную высоту 400dp. Нижний край этого макета всегда будет равным 484dp (с учетом первого LinearLayout) и оставит дополнительное пространство после него на любом экране размером более 484dp.

Я не совсем понимаю, каков ваш желаемый макет, но верьте, что вы хотите, чтобы центрировать второй LinearLayout внутри родительского LinearLayout. Для этого добавьте android:layout_gravity="center_vertical" так:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="400dp" 
    android:orientation="vertical" 
    android:layout_gravity="center_vertical" > 

Вы должны также рассмотреть вопрос о снятии Scrollview, поскольку этот контент никогда не должен прокручивать.

+0

Спасибо за ваш ответ. Я отсортировал эту проблему макета, но теперь у меня есть еще одна проблема, когда я не могу установить вид прокрутки из-за двух линейных макетов. Я отредактировал свой вопрос с новым XML – user1352057

+0

Ошибка, которую вы должны получить, довольно проста: вы не можете иметь два дочерних представления в ScrollView. Вы не приняли никаких предложений по исправлению исходной проблемы, и вы проигнорировали предложение, которое почти все сделали для удаления ScrollView. –

1

Ваш вложенный линейный макет с кнопками имеет фиксированную высоту 400dp. На маленьком устройстве это оставляет меньше места на дне, чем на более крупном nexus4.

Если вы изменили линейный макет с помощью кнопок, чтобы использовать значение высоты fill_parent, он должен равномерно размещать кнопки в пространстве, оставшемся в родительском макете под заголовком (контактами).

+0

Спасибо за ваш ответ. Я отсортировал эту проблему макета, но теперь у меня есть еще одна проблема, когда я не могу установить вид прокрутки из-за двух линейных макетов. Я отредактировал свой вопрос с новым XML. – user1352057

+0

Используйте 'match_parent', а не' fill_parent'. 'fill_parent' устарел. –

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