2013-05-24 3 views
1

У меня есть приложение, содержащее около 10 кнопок. На моем тестовом телефоне (HTC ONE X) все кнопки отображаются правильно. На моем другом тестовом телефоне (HTC Desire C) несколько кнопок находятся на экране. Нижние 2 кнопки и текстовые изображения отсутствуют.Android, как сделать кнопки подходят для разных размеров экрана

Как я могу сделать весь макет подходящим для разных размеров экрана? Должен ли я получать размер экрана во время выполнения, например, использовать getDisplayMetrics и т. Д.?

Заранее спасибо, Мэтт.

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


    <TextView 
     android:id="@+id/textviewcompanyname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#003F87" /> 

    <TextView 
     android:id="@+id/spacerasnexttextviewclasheswithbg" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     /> 

    <TextView 
     android:id="@+id/textview1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/stringloggedinscreen" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#003F87" /> 

<Button 
    android:id="@+id/buttonsignin" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stringbuttonsignin" /> 
<Button 
    android:id="@+id/buttongetrota" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stringbuttongetrota" /> 


<Button 
    android:id="@+id/buttongetphonenumbers" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stringbuttongetphonenumbers" /> 


    <Button 
     android:id="@+id/viewtransactionsactual" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="View Transactions" /> 


    <Button 
     android:id="@+id/buttondeletecarertable" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/stringbuttondeletetable" /> 

    <Button 
     android:id="@+id/buttonloadtransactionsmap" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/stringloadtransactionmap" /> 


    <Button 
     android:id="@+id/buttonloneworker" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/buttonloneworker" /> 


     <Button 
     android:id="@+id/buttonsendOutstandingTransactions" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/stringSendOutstandingTransactions" /> 

     <Button 
     android:id="@+id/buttoncreatemanuallogout" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="@string/stringbuttoncreatemanuallogout" /> 



    <RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <TextView 
     android:id="@+id/textViewYouAreSignedIn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_alignParentTop="true" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#FFFFFF" 
     /> 

      <TextView 
     android:id="@+id/textViewUnsentTransactions" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_below="@id/textViewYouAreSignedIn" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#FFFFFF" 
     /> 

     <TextView 
     android:id="@+id/textViewVersionmenuscreen" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/stringtextviewversion" 

     android:layout_alignParentBottom="true"/> 
    </RelativeLayout> 

    </LinearLay 

из>

+0

Документация: http://developer.android.com/guide/practices/screens_support.html –

+0

Лучший способ указать макет папки для различных размеров экрана. см. http://developer.android.com/guide/practices/screens_support.html – Opiatefuchs

ответ

2

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

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


<TextView 
    android:id="@+id/textviewcompanyname" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#003F87" /> 

<TextView 
    android:id="@+id/spacerasnexttextviewclasheswithbg" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    /> 

<TextView 
    android:id="@+id/textview1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stringloggedinscreen" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#003F87" /> 

    <Button 
    android:id="@+id/buttonsignin" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stringbuttonsignin" /> 
    <Button 
    android:id="@+id/buttongetrota" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stringbuttongetrota" /> 


    <Button 
    android:id="@+id/buttongetphonenumbers" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stringbuttongetphonenumbers" /> 


    <Button 
    android:id="@+id/viewtransactionsactual" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="View Transactions" /> 


    <Button 
    android:id="@+id/buttondeletecarertable" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stringbuttondeletetable" /> 

<Button 
    android:id="@+id/buttonloadtransactionsmap" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stringloadtransactionmap" /> 


<Button 
    android:id="@+id/buttonloneworker" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/buttonloneworker" /> 


    <Button 
    android:id="@+id/buttonsendOutstandingTransactions" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stringSendOutstandingTransactions" /> 

    <Button 
    android:id="@+id/buttoncreatemanuallogout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stringbuttoncreatemanuallogout" /> 



    <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TextView 
    android:id="@+id/textViewYouAreSignedIn" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:layout_alignParentTop="true" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#FFFFFF" 
    /> 

     <TextView 
    android:id="@+id/textViewUnsentTransactions" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:layout_below="@id/textViewYouAreSignedIn" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#FFFFFF" 
    /> 

    <TextView 
    android:id="@+id/textViewVersionmenuscreen" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/stringtextviewversion" 

    android:layout_alignParentBottom="true"/> 
    </RelativeLayout> 

    </LinearLayout> 
    </ScrollView> 
+0

благодарит за работу хорошо – turtleboy

2

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

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