2015-09-01 3 views
0

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

Я пробовал делать такие вещи, как описано here, но я не могу из-за многих причин (например, им использовать библиотеки, которых раньше не было).

Как я могу выполнить свою задачу, помимо создания разных файлов макета для всех размеров? пожалуйста, не связывайте меня this, я читал это несколько раз и не мог понять, как заставить его работать должным образом (помимо некоторого свойства limitLarge, которое делало его масштабируемым уродливым и размытым способом).

спасибо!

Edit: Пример макета и код следующим образом:

Вот как это выглядит на телефон:

enter image description here

И вот как это выглядит на планшете:

enter image description here

вы можете видеть, что макет «хранится» в его образовании, но я хочу, чтобы он «масштабировался», чтобы заняться экран. Я чувствую, что проблема заключается в блоке размера «dp» (поскольку на большом экране больше «dp»?), но я не могу его исправить. Я относительно новый на этом типе развития, поэтому, пожалуйста, помогите мне :)

<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:id="@+id/authLayout"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:text="FTW Name Placeholder" 
      android:id="@+id/textTitle" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="10dp" 
      android:layout_gravity="center_horizontal" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:text="Medium Text" 
      android:id="@+id/textViewInst" 
      android:layout_gravity="center_horizontal" 
      android:layout_marginTop="5dp" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Connect" 
      android:id="@+id/btnConnect" 
      android:layout_gravity="center_horizontal" /> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="15dp" 
      android:layout_gravity="center_horizontal"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Username:" 
       android:id="@+id/textView58" /> 

      <EditText 
       android:layout_width="220dp" 
       android:layout_height="wrap_content" 
       android:id="@+id/editTextUsername" 
       android:layout_marginLeft="10dp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="15dp" 
      android:layout_gravity="center_horizontal"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:text="Password" 
       android:id="@+id/textView59" /> 

      <EditText 
       android:layout_width="220dp" 
       android:layout_height="wrap_content" 
       android:id="@+id/editTextPassword" 
       android:layout_marginLeft="15dp" /> 
     </LinearLayout> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Auth" 
      android:id="@+id/authBtn" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_gravity="center_horizontal" 
      android:layout_marginTop="5dp" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="100dp" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:id="@+id/textView1" 
      android:scrollbars = "vertical" 
      android:gravity="bottom" 
      android:layout_centerHorizontal="true" 
      android:layout_alignParentBottom="true" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Next" 
      android:id="@+id/buttonSend" 
      android:layout_gravity="center_horizontal" /> 
    </LinearLayout> 

</RelativeLayout> 
+0

без каких-либо файлов макета мы не можем даже начать, чтобы помочь вам. если у вас есть жесткие значения высоты/ширины, вы должны удалить их и использовать 'match_parent/wrap_content' в своих макетах – tyczj

+0

Можете ли вы опубликовать пример макета? – acostela

+0

@ EdGeorge Я не просил «свободного кода», просил установить правильную настройку или методологию. Я отправлю пример макета в несколько мгновений – Zephyer

ответ

1

Для этого вы можете установить ширину и высоту в dimens.xml в разрешении/ценности sw600dp это для 7" таблеток

+0

, это хорошее начало, спасибо – Zephyer

0

Вы не должны предназначаться каких-либо конкретных API для разработки приложений планшета, просто предоставлять ресурсы, предназначенные для более высоких плотностей

Вы можете хранить макеты с тем же именем, но с разными суффиксами плотности, например

макет/mylayout.xml - любое устройство out-w700dp/mylayout.xml - устройства с шириной не менее 700dp.

таблетки начинаются в пределах 700dp (Это значение было получено из моего опыта, никаких фактических данных так что не цитируйте меня на этом)

Прочитайте эти документы, чтобы узнать больше

http://developer.android.com/guide/topics/resources/providing-resources.html http://developer.android.com/guide/practices/screens_support.html

PS Сделайте себе одолжение и цель 4.0 и до самого наименее старых устройств - это боль для работы, и у них сейчас очень мало доли рынка.

+0

Спасибо за ответ. Я занимаюсь разработкой Android 4+. Я отправлю образец макета и объясню свой вопрос дальше. – Zephyer

0

Вы редко когда требуется установить жесткие ширины, как этот

android:layout_width="220dp" 

Везде у вас есть что-то подобное, что вам нужно, чтобы заменить его match_parent, что будет гарантировать, что ширина такого же размера, как ваш родительском ширина макета

же с кнопками, где у вас есть эта

android:layout_width="wrap_content" 

сделать их соответствие родителей, и они будут охватывать ширину Scre эн.

Там нет необходимости хранить dimens в отдельных папках

+0

, но, скажем, я не хочу брать полную ширину родителя, а содержимое пуста в начале. следует ли использовать «вес»? будет ли это работать? Что относительно размеров шрифта? – Zephyer

+0

вы уже в значительной степени берете полную ширину своего родителя в своем макете телефона, а также просто потому, что это похоже на то, что на этом устройстве не означает, что он смотрит на других с большими или меньшими экранами. Меньшие экраны вашего макета могут быть обрезаны по бокам. Что относительно размеров шрифта? – tyczj

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