2014-08-31 5 views
0

Я создал макет для обычного размера экрана с плотностью hdpi с использованием относительной компоновки. Но я знаю некоторые устройства с одинаковым размером экрана, нижняя часть которых обрезана как 7-8 миллиметров для 3 обычных кнопок Android (дома и т. Д.).Обычный размер экрана на экране Android снизу

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

Спасибо.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/prime" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#8B008B" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="5dp" 
tools:context="com.example.testznanja.MainActivity" > 

<RelativeLayout 
    android:id="@+id/rl" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:background="@drawable/question_layout" > 

    <TextView 
     android:id="@+id/questionText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:gravity="center" 
     android:text="Large Text" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 
</RelativeLayout> 

<Button 
    android:id="@+id/beginTest" 
    android:layout_width="match_parent" 
    android:layout_height="52dp" 
    android:layout_below="@+id/infoPanel" 
    android:layout_marginTop="25dp" 
    android:background="@drawable/button_normal" 
    android:text="Button" /> 

<Button 
    android:id="@+id/button2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/beginTest" 
    android:layout_marginTop="18dp" 
    android:background="@drawable/button_normal" 
    android:text="Button" /> 

<Button 
    android:id="@+id/button3" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/button2" 
    android:layout_marginTop="18dp" 
    android:background="@drawable/button_normal" 
    android:text="Button" /> 

<Button 
    android:id="@+id/button4" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/button3" 
    android:layout_marginTop="18dp" 
    android:background="@drawable/button_normal" 
    android:text="Button" /> 

<RelativeLayout 
    android:id="@+id/infoPanel" 
    android:layout_width="match_parent" 
    android:layout_height="35dp" 
    android:layout_below="@+id/rl" 
    android:layout_marginTop="25dp" 
    android:background="@drawable/info_panel_layout" 
    android:paddingLeft="5dp" 
    android:paddingRight="5dp" > 

    <TextView 
     android:id="@+id/questionsAnswers" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:text="Skor: 0" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/timer" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:gravity="right" 
     android:text="Vreme: 20" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/help" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:text="50:50" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 
</RelativeLayout> 

+0

можете ли вы разместить свой XML-код, чтобы мы могли видеть проблему? – chjarder

+0

Я разместил файл .xml –

ответ

0

Вы пробовали тестирование на эмулятор с мягкими кнопками меню, как серии связующих? Эти пропорции телефонов не очень далеки от других телефонов, таких как галактика s3, s4 и т. Д. Но чтобы ответить на ваш вопрос, если вы действительно хотите, чтобы ваш макет был гибким для всего, есть 3 варианта, о которых я могу думать:

[1] Если вы не против прокрутки, вы можете обернуть ваш родительский RelativeLayout, который равен @+id/prime внутри ScrollView. Или взгляните на свой xml-файл, который я изменил. Просто замените с вводимого коэффициента, который вы поставки:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 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" > 

    <RelativeLayout 
     android:id="@+id/prime" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#8B008B" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="5dp" 
     tools:context="com.example.testznanja.MainActivity" > 

     <RelativeLayout 
      android:id="@+id/rl" 
      android:layout_width="match_parent" 
      android:layout_height="100dp" 
      android:background="@drawable/question_layout" > 

      <TextView 
       android:id="@+id/questionText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:gravity="center" 
       android:text="Large Text" 
       android:textAppearance="?android:attr/textAppearanceLarge" /> 
     </RelativeLayout> 

     <Button 
      android:id="@+id/beginTest" 
      android:layout_width="match_parent" 
      android:layout_height="52dp" 
      android:layout_below="@+id/infoPanel" 
      android:layout_marginTop="25dp" 
      android:background="@drawable/button_normal" 
      android:text="Button" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/beginTest" 
      android:layout_marginTop="18dp" 
      android:background="@drawable/button_normal" 
      android:text="Button" /> 

     <Button 
      android:id="@+id/button3" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/button2" 
      android:layout_marginTop="18dp" 
      android:background="@drawable/button_normal" 
      android:text="Button" /> 

     <Button 
      android:id="@+id/button4" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/button3" 
      android:layout_marginTop="18dp" 
      android:background="@drawable/button_normal" 
      android:text="Button" /> 

     <RelativeLayout 
      android:id="@+id/infoPanel" 
      android:layout_width="match_parent" 
      android:layout_height="35dp" 
      android:layout_below="@+id/rl" 
      android:layout_marginTop="25dp" 
      android:background="@drawable/info_panel_layout" 
      android:paddingLeft="5dp" 
      android:paddingRight="5dp" > 

      <TextView 
       android:id="@+id/questionsAnswers" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_centerVertical="true" 
       android:text="Skor: 0" 
       android:textAppearance="?android:attr/textAppearanceLarge" /> 

      <TextView 
       android:id="@+id/timer" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_centerVertical="true" 
       android:gravity="right" 
       android:text="Vreme: 20" 
       android:textAppearance="?android:attr/textAppearanceLarge" /> 

      <TextView 
       android:id="@+id/help" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:text="50:50" 
       android:textAppearance="?android:attr/textAppearanceLarge" /> 
     </RelativeLayout> 

     <View 
      android:id="@+id/dummy" 
      android:layout_width="match_parent" 
      android:layout_height="800dp" 
      android:layout_below="@+id/button4" 
      android:background="#ff4444" /> 
    </RelativeLayout> 

</ScrollView> 

Обратите внимание, что я добавил View с красным фоном и android:id="@+id/dummy" в нижней части. Это позволит вам увидеть эффект прокрутки и смоделировать сценарий обрезки. Просто удалите его, если он вам не нужен.

[2] Если вы хотите, чтобы все было на экране, без необходимости прокрутки вниз, вы должны преобразовать родителя RelativeLayout в LinearLayout и use weights для каждого ребенка. Этот подход более сложный и влечет за собой большую работу, поскольку вам нужно рассчитать вес для каждого ребенка, и вы должны в значительной степени изменить каждую ширину и высоту детей в xml, который у вас уже есть.

[3] Редизайн вашего макета, чтобы он всегда имел дополнительное пространство для размещения различных пропорций устройства и перепроектировал ваши изображения и фон. Предлагаю вам прочитать на Android Design Guidelines.

Первый из них является самым легким из 3. Если вы хотите, чтобы ваш макет был максимально гибким, мне жаль, мой друг, но я не могу придумать более простой способ сделать это.

+0

Мне не нужен эмулятор, у моего телефона есть программные клавиши, поэтому я использую его на реальном устройстве, мой макет обрезается ими. Я нашел решение, создающее другой макет (layoutWithKeys.xml), и я проверяю, есть ли у устройства программные клавиши или нет, в зависимости от того, что я установилContentView с тем или иным макетом. Однако спасибо за попытку помочь мне спариться. –

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