2015-03-26 5 views
1

Мое приложение прекрасно выглядит в настроении Портрет практически во всех устройствах. Но в ландшафтном режиме он разбивается и помещает «Взгляды сверху» друг на друга. У меня есть плагин GenyMotion с Android Studio, и я попытался установить различные типы устройств, однако проблемы остаются такими же.Ландшафтный режим разрывает макет

Вот пример портретном режиме:

Portrait

Ландшафтный режим:

Landscape

.XML файл:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" 
    android:background="#FFFFFF"> 

    <TextView 
     android:id="@+id/timerValue" 
     android:layout_width="250dp" 
     android:layout_height="55dp" 
     android:layout_above="@+id/pauseButton" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="37dp" 
     android:textSize="50dp" 
     android:textColor="#cd0000" 
     android:text="@string/timerVal" 
     android:textStyle="bold" 
     android:background="#FFFFFF" 
     android:gravity="center_horizontal" /> 

    <Button 
     android:id="@+id/startButton" 
     android:layout_width="105dp" 
     android:layout_height="45dp" 
     android:text="@string/startButtonLabel" 
     android:background="#000000" 
     android:textColor="#fffaf0" 
     android:textStyle="bold" 
     android:textSize="25dp" 
     android:layout_marginBottom="196dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginLeft="39dp" 
     android:layout_marginStart="39dp" /> 

    <Button 
     android:id="@+id/pauseButton" 
     android:layout_width="105dp" 
     android:layout_height="45dp" 
     android:layout_alignBaseline="@+id/startButton" 
     android:layout_alignBottom="@+id/startButton" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="38dp" 
     android:text="@string/pauseButtonLabel" 
     android:background="#000000" 
     android:textColor="#fffaf0" 
     android:textStyle="bold" 
     android:textSize="25dp" /> 

    <TextClock 
     android:layout_width="250dp" 
     android:layout_height="55dp" 
     android:id="@+id/textClock" 
     android:textSize="50dp" 
     android:layout_marginTop="48dp" 
     android:gravity="center_horizontal" 
     android:background="#FFFFFF" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:layout_width="105dp" 
     android:layout_height="45dp" 
     android:text="RESET" 
     android:id="@+id/reset" 
     android:layout_marginTop="30dp" 
     android:textSize="25dp" 
     android:textStyle="bold" 
     android:background="#000080" 
     android:textColor="#DC143C" 
     android:layout_below="@+id/pauseButton" 
     android:layout_centerHorizontal="true" /> 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/fbutton" 
     android:src="@drawable/fbshare" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:background="#FFFFFF" /> 

</RelativeLayout> 
+0

Потому что это макет, который вы указали. Установка поля 30dp над чем-то означает, что на нем всегда будет 30dp. Попробуйте создать ландшафтный макет и поместить его в каталог 'layout-land', который используется, когда устройство находится в ландшафтном режиме. – alanv

ответ

0

Вы должны создать другой каталог внутри res и n ame it layout-land, это похоже на то, что вы делаете с многоязычным каталогом значений.

Это означает, что для чего есть два разных активата: портретный в папке макета и пейзаж, который находится в папке с макетами, и оба имеют одно и то же имя.

После создания ландшафтной деятельности вы можете изменить его, как вы хотите

+0

Ну, вам не обязательно, но это, безусловно, позволяет вам больше свободы –

+0

спасибо, что ответили! Но я получил неполную идею. Можете ли вы быть более конкретным? Вы уверены, что мне нужно создать каталог внутри res или вы имели в виду файл ресурсов XML? Хорошо, после создания каталога мне нужно создать XML-файл внутри этого каталога? Если я это сделаю, это повлияет на настроение моего портрета? – Riyana

+0

Вы можете создать каталог, а затем скопировать все действия, которые вы хотите иметь для макета ландшафтного режима, в этот каталог с тем же именем. Затем вы можете внести все изменения в эту деятельность в каталог макета-земли. Android Studio также показывает вам телефон в альбомном режиме. – Chris

0

Это должно получить работу в основном сделано. Как говорили другие, лучше всего создавать макеты специально для пейзажа.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:paddingLeft="@dimen/activity_horizontal_margin" 
       android:paddingRight="@dimen/activity_horizontal_margin" 
       android:paddingTop="@dimen/activity_vertical_margin" 
       android:paddingBottom="@dimen/activity_vertical_margin" 
       tools:context=".MainActivity" 
       android:background="#FFFFFF"> 

    <TextView 
     android:id="@+id/timerValue" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="50dp" 
     android:textColor="#cd0000" 
     android:text="00:00:00" 
     android:textStyle="bold" 
     android:background="#FFFFFF" 
     android:gravity="center_horizontal" 
     android:layout_above="@+id/startButton" 
     android:layout_centerHorizontal="true"/> 

    <Button 
     android:id="@+id/startButton" 
     android:layout_width="105dp" 
     android:layout_height="45dp" 
     android:text="Start" 
     android:background="#000000" 
     android:textColor="#fffaf0" 
     android:textStyle="bold" 
     android:textSize="25dp" 
     android:layout_alignTop="@+id/pauseButton" 
     android:layout_toLeftOf="@+id/fbutton" 
     android:layout_toStartOf="@+id/fbutton"/> 

    <Button 
     android:id="@+id/pauseButton" 
     android:layout_width="105dp" 
     android:layout_height="45dp" 
     android:text="Pause" 
     android:background="#000000" 
     android:textColor="#fffaf0" 
     android:textStyle="bold" 
     android:textSize="25dp" 
     android:layout_centerVertical="true" 
     android:layout_toRightOf="@+id/fbutton" 
     android:layout_toEndOf="@+id/fbutton"/> 

    <TextClock 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/textClock" 
     android:textSize="50dp" 
     android:gravity="center_horizontal" 
     android:background="#FFFFFF" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true"/> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="RESET" 
     android:id="@+id/reset" 
     android:textSize="25dp" 
     android:textStyle="bold" 
     android:background="#000080" 
     android:textColor="#DC143C" 
     android:layout_above="@id/fbutton" 
     android:layout_below="@+id/startButton" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="49dp"/> 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/fbutton" 
     android:src="@drawable/fbshare" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:background="#FFFFFF"/> 

</RelativeLayout> 
Смежные вопросы