【问题标题】:Scale phone app layout to tablet sized screens in android在 android 中将手机应用布局缩放到平板电脑大小的屏幕
【发布时间】:2015-11-26 17:47:05
【问题描述】:

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

我尝试过像here 描述的那样做,但由于很多原因我不能(例如,我使用了当时不存在的库)。

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

谢谢!

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

这是它在手机上的样子:

这就是它在平板电脑上的样子:

您可以看到布局“保持”其形成,但我希望它“放大”以占据整个屏幕。我“感觉”问题出在“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>

【问题讨论】:

  • 没有任何布局文件,我们甚至无法开始帮助您。如果你有硬的高度/宽度值,你应该删除它们并在你的布局上使用match_parent/wrap_content
  • 你能发布一个布局示例吗?
  • @EdGeorge 我不是要求“免费代码”,而是要求正确的设置或方法。稍后我将发布一个布局示例
  • 抱歉,我看错了问题

标签: android xml layout scale tablet


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您无需针对任何特定的 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 及更高版本 至少,旧设备很难使用,而且它们现在的市场份额很小。

    【讨论】:

    • 感谢您的回复。我确实为 Android 4+ 开发。我将发布一个示例布局并进一步解释我的问题。
    【解决方案3】:

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

    android:layout_width="220dp"
    

    您需要将其替换为 match_parent 的任何地方,以确保宽度与您的父布局宽度大小相同

    与您的按钮相同

    android:layout_width="wrap_content"
    

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

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

    【讨论】:

    • 但可以说我不想占用父级的全部宽度,并且内容一开始是空的。我应该使用“权重”吗?那行得通吗?字体大小呢?
    • 你已经在你的手机布局中占据了你父母的整个宽度,而且仅仅因为它在那个设备上看起来像这样并不意味着它在其他屏幕更大或更小的设备上看起来就是这样。较小的屏幕您的布局可能会在侧面被切断。字体大小呢?
    猜你喜欢
    • 2012-12-09
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多