将手机应用程序布局扩展到Android中的平板大小的屏幕

时间:2015-09-01 13:04:56

标签: android xml layout scale tablet

我制作了一款Android应用。我希望它也可以在平板电脑上使用,具有相同的布局文件。然而,不是“缩放”界面以匹配平板电脑的大小,而是将其设置为手机界面的大小,只是在大显示屏上,导致很多混乱。

我尝试过像here这样的事情,但我不能因为很多原因(例如,我正在使用当时不存在的库)。

除了为所有尺寸做不同的布局文件外,我如何完成我的任务?请不要链接我this,我读过几次并且无法理解如何使其正常工作(除了一些使其以丑陋和模糊的方式扩展的limitLarge属性)。

谢谢!

编辑:示例布局和以下代码:

这就是它在手机上的样子:

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>

3 个答案:

答案 0 :(得分:1)

为此可以在res / values-sw600dp中的dimens.xml中设置宽度和高度,这适用于7“平板电脑

答案 1 :(得分:0)

您无需针对任何特定API开发平板电脑应用,只需提供针对更高密度的资源

您可以存储具有相同名称但不同密度后缀的布局,例如

layout / mylayout.xml - 任何设备 layout-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及以上 至少,较旧的设备很难与之合作,现在市场份额很小。

答案 2 :(得分:0)

你很少想要像这样设置硬宽度

android:layout_width="220dp"

你到处都有类似的东西,你需要用match_parent代替它,以确保宽度与你的父版面宽度相同

与您拥有此按钮的按钮相同

android:layout_width="wrap_content"

使它们与父级匹配,它们将跨越屏幕的宽度。

无需将dimens存储在单独的文件夹中