2015-10-01 2 views
0

У меня возникла проблема при создании приложения. Вот мой xml Layout, который отлично работает на маленьком экране, но не работает должным образом в Tabs.How Как настроить макет, чтобы сделать общий для всех экранов. Также я хотел бы знать, что я установил высоту текстового поля в dps, малый экран w.r.t (по умолчанию один), но он не занимает надлежащее место в tab.So я могу настроить его?Должен ли я сделать отдельный макет для вкладок?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" 
    android:orientation="vertical" 
    android:layout_height="fill_parent" 

    tools:context=".MainActivity" 
    android:weightSum="1" 
    android:background="#ffffffff"> 


    <RelativeLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_gravity="center_horizontal" 
     android:layout_weight="0.55" 
     android:weightSum="1" 
     android:background="#1E90FF"> 

     <ImageView 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:id="@+id/imageView" 
      android:background="@drawable/lock" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="10dp" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Login" 

      android:id="@+id/textView11" 
      android:layout_below="@+id/imageView" 
      android:layout_centerHorizontal="true" 
      android:textColor="#ffffffff" 
      android:textSize="20dp" /> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/imageButton8" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:background="@drawable/f_icon" 
      android:layout_below="@+id/textView11" 
      android:layout_marginTop="60dp" /> 


    </RelativeLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_horizontal" 
     android:layout_weight="0.45"> 




     <EditText 
      android:layout_width="240dp" 
      android:layout_height="40dp" 
      android:id="@+id/editText10" 
      android:background="@drawable/edittextstyle" 
      android:drawableLeft="@drawable/textboxuser" 

      android:drawablePadding="2dp" 
      android:paddingLeft="5dip" 
      android:paddingRight="26dip" 
      android:hint="Username" 
      android:singleLine="true" 

      android:layout_gravity="center_horizontal" 
      android:textColor="#ff464646" 
      android:textSize="20dp" 
      android:layout_marginTop="20dp" /> 

     <EditText 
      android:layout_width="240dp" 
      android:layout_height="40dp" 
      android:inputType="textPassword" 
      android:ems="10" 
      android:paddingLeft="10dip" 
      android:paddingRight="26dip" 
      android:background="@drawable/edittextstyle" 
      android:drawableLeft="@drawable/textboxpwd" 
      android:layout_margin="10dp" 
      android:id="@+id/editText11" 
      android:layout_gravity="center_horizontal" 
      android:hint="Password" 
      android:textSize="20dp" /> 

     <Button 
      android:layout_width="240dp" 
      android:layout_height="40dp" 
      android:text="Sign In" 
      android:background="#1E90FF" 
      android:layout_margin="10dp" 
      android:id="@+id/button4" 
      android:layout_gravity="center_horizontal" 
      android:textColor="#ffffffff" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:text="Forgot Password !! Click Here" 

      android:id="@+id/textView10" 
      android:textColor="#ff424242" 
      android:layout_gravity="center_horizontal" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="68dp" /> 

     <Button 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 

      android:text="Not a member yet? Join Now" 
      android:onClick="register" 
      android:id="@+id/button5" 
      android:textColor="#fffcfffa" 

      android:clickable="true" 


      android:background="#ff000000" /> 
    </LinearLayout> 
</LinearLayout> 

ответ

1

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

res/layout/my_layout.xml    // layout for normal screen size ("default") 
res/layout-large/my_layout.xml  // layout for large screen size 
res/layout-xlarge/my_layout.xml  // layout for extra-large screen size 
res/layout-xlarge-land/my_layout.xml 

для планшета вы можете объявить отдельный макет как

res/layout/main_activity.xml   # For handsets 
res/layout-sw600dp/main_activity.xml # For tablets 

Но прежде всего пройти через андроида сайт разработчиков. Прочтите все подробности. Вы получите всю информацию в более структурированном пути

https://developer.android.com/guide/practices/screens_support.html

EDIT:

Квалификаторов конфигурации, которые вы можете использовать, чтобы обеспечить размером конкретных ресурсов маленькие, нормальные, большие, и XLarge. Например, макеты для особо большого экрана должны идти в layout-xlarge /. Начиная с Android 3.2 (уровень API 13) вышеупомянутые группы размеров устарели, и вместо этого вы должны использовать квалификатор конфигурации swdp, чтобы определить наименьшую доступную ширину, необходимую вашим ресурсам макета.

res/layout-sw600dp/main_activity.xml # For tablets 
+0

Спасибо за помощь. Таким образом, в основном подход заключается в том, чтобы найти разрешение экрана в onCreate, а затем установить соответствующий макет. Я иду так? –

+0

На самом деле андроид автоматически обнаружит макет в соответствии с размером экрана. Вам не нужно устанавливать его вручную. Просто сохраните имена папок. –

+0

Я просто смущен знаю. Скажем, у меня есть этот xml-макет. но в Tab (nexus 7 (800x1280)) он не работает proproperly. Поэтому теперь мне нужно выбрать другой макет для этой вкладки и поместить его в res/layout-xlarge/my_layout.xml. И идя так, используя разные разрешения. –

0

Android также поддерживает несколько версий Рез/значений на основе размера, ориентации экрана и многих других классификаторов конфигурации:

res/values/dimens.xml 
res/values-large/dimens.xml 
res/values-xlarge/dimens.xml 
res/values-xlarge-land/dimens.xml 

В каждом dimens.xml вы можете поставить размеры, чтобы использовать позже в макетах

пример вид:

<EditText 
    android:layout_width="@dimen/edit_text_width" 
    android:layout_height="@dimen/edit_text_height" /> 

значения/dimens.xml:

<resources> 
    <dimen name="edit_text_width">120dp</dimen> 
    <dimen name="edit_text_height">200dp</dimen> 
</resources> 

значения/Dimens-large.xml:

<resources> 
    <dimen name="edit_text_width">240dp</dimen> 
    <dimen name="edit_text_height">300dp</dimen> 
</resources> 

Часто все, что вам нужно поддерживать множество размеров экрана, так что стоит проверить

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