2013-08-16 5 views
4

My LinearLayout изменяется с ориентацией экрана. В портретном режиме, он выглядит идеально:Как заставить пользовательский интерфейс выглядеть в ландшафтном режиме?

portrait mode

Но в ландшафтном режиме он выглядит следующим образом:

landscape mode

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

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/border" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <ImageView 
      android:id="@+id/imgfourth1" 
      android:layout_width="70dp" 
      android:layout_height="50dp" 
      android:layout_marginRight="25dp" 
      android:layout_marginLeft="25dp" 
      android:paddingTop="2dp"  
      android:src="@drawable/amlet1" /> 

     <ImageView 
      android:id="@+id/imgfourth2" 
      android:layout_width="70dp" 
      android:paddingTop="2dp" 
      android:layout_height="50dp" 
      android:layout_marginRight="25dp"  
      android:contentDescription="@null" 
      android:src="@drawable/lnch1" /> 

     <ImageView 
      android:id="@+id/imgfourth3" 
      android:layout_marginRight="25dp" 
      android:paddingLeft="20dp" 
      android:layout_width="70dp" 
      android:layout_height="50dp" 
      android:paddingTop="2dp" 
      android:contentDescription="@null" 
      android:src="@drawable/supper" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="20dp" 
     android:background="@drawable/border4" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/txtfth1" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginTop="2dp" 
      android:layout_marginLeft="25dp" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp" 
      android:gravity="center" 
      android:contentDescription="@null" 
      android:text="Breakfast" /> 

     <TextView 
      android:id="@+id/txtfth2" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="25dp" 
      android:paddingLeft="10dp" 
      android:gravity="center" 
      android:paddingRight="35dp"  
      android:layout_marginTop="2dp" 
      android:contentDescription="@null" 
      android:text="Lunch" /> 

     <TextView 
      android:id="@+id/txtfth3" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="20dp" 
      android:layout_marginTop="2dp" 
      android:gravity="center" 
      android:paddingRight="30dp" 
      android:contentDescription="@null" 
      android:text="Supper" /> 
    </LinearLayout> 
</LinearLayout> 
+0

Пожалуйста, отступы кода. Его нечитаемо. – taxeeta

+0

Я вставляю свои изображения потолка и пейзажа выше, см. Url – user2686011

+0

Обратите внимание, что на ваш вопрос были проблемы с грамматикой и орфографические ошибки. – taxeeta

ответ

1

Вы можете создать два разных макета: один для книжного режима и один для ландшафтного режима. Это решит вашу проблему.

Keep your 
1. portrait mode layout in res/layout folder and 
2. landscape mode layout in res/layout-land folder. 

Android примет соответствующий макет, основываясь на вашей ориентации.

* EDIT: одиночный раскладка * **

Если вы хотите использовать один макет для портретной и альбомной ориентации, то следующий должен помочь вам

Я использовал android:weightsum и android:layout_weight, чтобы сделать его Посмотрите правильно.

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

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:weightSum="100"> 

    <ImageView 
     android:id="@+id/imgfourth1" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="33"    
     android:src="@drawable/ic_launcher" /> 

    <ImageView 
     android:id="@+id/imgfourth2" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="33" 
     android:src="@drawable/ic_launcher" /> 

    <ImageView 
     android:id="@+id/imgfourth3" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="33" 
     android:src="@drawable/ic_launcher" /> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="20dp"   
    android:orientation="horizontal" 
    android:weightSum="100" > 

    <TextView 
     android:id="@+id/txtfth1" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="33" 
     android:gravity="center_horizontal" 
     android:text="Breakfast" /> 

    <TextView 
     android:id="@+id/txtfth2" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="33" 
     android:gravity="center_horizontal" 
     android:text="Lunch" /> 

    <TextView 
     android:id="@+id/txtfth3" 
     android:layout_width="0dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="33" 
     android:gravity="center_horizontal" 
     android:text="Supper" /> 
</LinearLayout> 

+0

как? создать два разных формата? – user2686011

+0

2 макеты для решения простой проблемы - это плохие советы.Очень скоро наш чувак должен будет создать * 2 файла макета. И затем для всех резолюций. Действительно плохой совет. – taxeeta

+0

Создайте каталог макета в папке res и поместите ландшафтную версию XML-файла вашего макета в этот каталог. –

2

У вас есть 3 LinearLayouts, 1 внешний и 2 внутренних. На внутренних макетах поставьте это android:layout_gravity="center_horizontal". Это должно сосредоточиться на обоих.

Также, если вы считаете, что ваш портрет работает . Обратите внимание на пустое пространство справа.

<?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:background="@drawable/border" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:orientation="horizontal" > 

     <ImageView 
      android:id="@+id/imgfourth1" 
      android:layout_width="70dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="25dp" 
      android:layout_marginRight="25dp" 
      android:paddingTop="2dp" 
      android:src="@drawable/amlet1" /> 

     <ImageView 
      android:id="@+id/imgfourth2" 
      android:layout_width="70dp" 
      android:layout_height="50dp" 
      android:layout_marginRight="25dp" 
      android:contentDescription="@null" 
      android:paddingTop="2dp" 
      android:src="@drawable/lnch1" /> 

     <ImageView 
      android:id="@+id/imgfourth3" 
      android:layout_width="70dp" 
      android:layout_height="50dp" 
      android:layout_marginRight="25dp" 
      android:contentDescription="@null" 
      android:paddingLeft="20dp" 
      android:paddingTop="2dp" 
      android:src="@drawable/supper" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="20dp" 
     android:layout_gravity="center_horizontal" 
     android:background="@drawable/border4" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/txtfth1" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="25dp" 
      android:layout_marginTop="2dp" 
      android:contentDescription="@null" 
      android:gravity="center" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp" 
      android:text="Breakfast" /> 

     <TextView 
      android:id="@+id/txtfth2" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="25dp" 
      android:layout_marginTop="2dp" 
      android:contentDescription="@null" 
      android:gravity="center" 
      android:paddingLeft="10dp" 
      android:paddingRight="35dp" 
      android:text="Lunch" /> 

     <TextView 
      android:id="@+id/txtfth3" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="20dp" 
      android:layout_marginTop="2dp" 
      android:contentDescription="@null" 
      android:gravity="center" 
      android:paddingRight="30dp" 
      android:text="Supper" /> 
    </LinearLayout> 

</LinearLayout> 
+0

да, ур права, как я исправил эту проблему, чтобы показать эту же ориентацию – user2686011

+0

, чтобы исправить ее, вам нужно добавить 'android: layout_gravity =" center_horizontal «к вашим внутренним макетам, точно так же, как это говорится в ответе. Я также добавил свой собственный код обратно. Надеюсь, у вас больше нет путаницы. – taxeeta

+0

Ур код не работает, это выглядит на пейзаже http://imgur.com/iq3hckx – user2686011

2

Дополняя ответ taxeeta, всего добавить android:layout_gravity="center_horizontal" как для ваших внутренних тегов LinearLayout.

+0

Хотя это именно то, что я говорил, поскольку вы новичок и имеете правильный ответ. Так что повысьте. – taxeeta

+0

@taxeeta, я знаю, что вы говорили, я просто дополнил его, потому что в вашем ответе не было. Вы просто добавили свойство layout_gravity на второй LinearLayout. Я не имел в виду, что ваш ответ был неправильным. Извините, если это было похоже. –

+0

Thats штраф, никакого вреда сделано :). – taxeeta

0

Попробуйте с этими линиями:

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:weightSum="3" 
    android:orientation="horizontal"> 

    <ImageView 
     android:id="@+id/imgfourth1" 
     android:layout_width="0dip" 
     android:layout_height="50dp" 
     android:layout_weight="1" 
     android:src="@drawable/amlet1" /> 

    <ImageView 
     android:id="@+id/imgfourth2" 
     android:layout_width="0dip" 
     android:layout_height="50dp" 
     android:layout_weight="1" 
     android:src="@drawable/lnch1" /> 

    <ImageView 
     android:id="@+id/imgfourth3" 
     android:layout_width="0dip" 
     android:layout_height="50dp" 
     android:layout_weight="1" 
     android:src="@drawable/supper" /> 
</LinearLayout> 

В основном вы должны думать, что вы заполнить экран, а затем разделить его в соответствии с вашими потребностями, поэтому он будет соответствовать на пейзаж, или портрет, или даже с разными плотности. И я также предлагаю вам поместить высоту изображения в папку differens density dimens, так что она также может быть разнообразна.

0

Проще говоря андроид: макет вес = «33» это даст 33% пространства для всех трех элементов и будет соответствовать любому разрешению в любой ориентации

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