2016-02-09 2 views
1

Я пытаюсь использовать percentRelativeLayout, чтобы сделать мое приложение 90% ширины экрана и 50% высоты экрана.Как сделать приложение в процентах от размера экрана

Мой макет состоит из двух фрагментов: 1) левая сторона - 4 кнопки, а 2) правая сторона - это контейнер, который вставляет другой фрагмент при каждом нажатии кнопки.

Когда я использую percentRelativeLayout или percentFrameLayout, чтобы сделать высоту 50% экрана, а ширина 90% экрана, я получаю результат ниже, где кажется, что я получаю свои фрагменты как 50% высоты и 90% ширины экрана INSIDE поле, которое составляет 50% от высоты всего экрана и 90% от ширины общего экрана. Кто-нибудь знает, как я могу это исправить?

Я попытался установить свой layout_height и width в match_parent для обоих макетов, и результат либо тот же, либо приложение занимает весь экран. Я также позаботился о том, чтобы использовать тему, которая занимает весь экран, а не тему диалога. Я также попытался использовать родительский RelativeLayout с процентомRelativeLayout, вложенным внутри, с layout_widthPercent и layout_heightPercent, примененным к моим фрагментам, и я получаю тот же результат.

<android.support.percent.PercentFrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_gravity="center" 
    android:background="@drawable/rounded_edges" 
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    app:layout_widthPercent="90%" 
    app:layout_heightPercent="50%" 
    > 
<fragment 
    android:id="@+id/menuFragment" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_margin="5dp" 
    class="it.anddev.bradipao.janus.MenuFragment" 
    tools:layout="@layout/fr_menu"> 
</fragment> 

<FrameLayout 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

</LinearLayout> 

</android.support.percent.PercentFrameLayout> 

Here is what I want it to look like

Here is what it looks like now

+2

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

+0

Вы можете использовать диалоговую тему для активности. проверить это http://stackoverflow.com/a/1979631/2128166 – androidnoobdev

+0

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

ответ

0

Похоже, ширина вашего фрагмента Меню занимает около 30% от общей ширины ее диалогового стилизованного родителя и содержание занимает около 70%. Я хотел бы использовать PercentRelativeLayout внутри PercentFrameLayout как следующий

<?xml version="1.0" encoding="utf-8"?> 
<android.support.percent.PercentFrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.percent.PercentRelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" 
     android:background="@drawable/rounded_edges" 
     android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
     app:layout_heightPercent="50%" 
     app:layout_widthPercent="90%"> 

     <fragment 
      android:id="@+id/menuFragment" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_margin="5dp" 
      android:layout_alignParentStart="true" 
      app:layout_widthPercent="30%" 
      class="it.anddev.bradipao.janus.MenuFragment" 
      tools:layout="@layout/fr_menu"> 
     </fragment> 


     <FrameLayout 
      android:id="@+id/container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_toEndOf="@+id/menuFragment" /> 

    </android.support.percent.PercentRelativeLayout> 

</android.support.percent.PercentFrameLayout> 

Что касается двойного белого фона появляющегося позади вашего Добра пожаловать фрагмента, я не могу сказать, почему это происходит, не смотря на его файл макет. Вы можете удалить фон в макете для всех фрагментов вы замещаете в container FrameLayout

0

вещей, которые я изменил, чтобы показать button удаляют menu fragment с четырьмя buttons, чтобы имитировать изображение, которое вы хотите в результате, вы может заменить это четыре buttons с menu fragment

<?xml version="1.0" encoding="utf-8"?> 
<android.support.percent.PercentFrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/transparent"> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" 
     android:background="@android:color/holo_blue_dark" 
     android:padding="4dp" 
     app:layout_heightPercent="50%" 
     app:layout_marginPercent="5%" 
     app:layout_widthPercent="90%"> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="center_vertical" 
      android:layout_margin="4dp" 
      android:layout_weight="0.3" 
      android:background="@android:color/holo_purple" 
      android:contentDescription="this is where you can keep your buttons" 
      android:gravity="center" 
      android:orientation="vertical"> 


      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_margin="4dp" 
       android:layout_weight="1" 
       android:text="First" 
       android:textAllCaps="false" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_margin="4dp" 
       android:layout_weight="1" 
       android:text="Second" 
       android:textAllCaps="false" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_margin="4dp" 
       android:layout_weight="1" 
       android:text="Third" 
       android:textAllCaps="false" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_margin="4dp" 
       android:layout_weight="1" 
       android:text="Forth" 
       android:textAllCaps="false" /> 
     </LinearLayout> 

     <FrameLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="bottom" 
      android:layout_margin="4dp" 
      android:layout_weight="0.7" 
      android:background="@android:color/holo_green_dark" 
      android:contentDescription="this would be your frame container"></FrameLayout> 
    </LinearLayout> 

</android.support.percent.PercentFrameLayout> 

выход на enter image description here

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