【问题标题】:How to make a program for different screens on android如何在android上为不同的屏幕制作程序
【发布时间】:2013-12-02 05:36:04
【问题描述】:

我正在为手机和平板电脑开发一个应用程序,问题是我需要该应用程序在设备 2.3.3 android 版本(我认为 API 级别 10)上运行,大多数设备使用 2.7 英寸的屏幕,所以我尝试让应用程序适应这个屏幕和 4 英寸的屏幕,现在是平板电脑......这个应用程序真的很简单,我只是在滚动视图中使用 TableLayout 和一些 TextViews 和 Edittexts;对于最小的屏幕,它可以很好地显示,但在平板电脑中它似乎不太好,一半的屏幕被浪费了,好吧,我只想让 textviews 和 Edittext 占据整个屏幕......我把应用程序只放在纵向上的清单模式。另外,我正在使用 android studio... 这是活动的 xml:

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

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        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=".GPSActivity"
        >

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="@string/txvwTittle"
                android:id="@+id/txtVwTitulo"
                android:textSize="18sp"
                android:textColor="#c61d11"
                android:inputType="none"
                android:layout_column="0"
                android:focusable="false"
                android:textStyle="bold" />
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginBottom="5dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:text="@string/tv_velocimetro"
                android:id="@+id/txtVwVelocimetro"
                android:layout_column="0"
                android:layout_marginTop="10dp"
                android:focusable="false"
                android:textStyle="bold"
                android:textSize="20dp" />
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <EditText
                    android:layout_width="150dp"
                    android:layout_height="38dp"
                    android:id="@+id/edTxtVelocidad"
                    android:layout_gravity="left"
                    android:inputType="none"
                    android:clickable="false"
                    android:editable="false"
                    android:focusable="false"
                    android:background="@drawable/abc_ab_transparent_dark_holo"
                    android:textStyle="bold"
                    android:textColor="#c61d11"
                    android:singleLine="false"
                    android:layout_marginTop="10dp" />

                <EditText
                    android:layout_width="140dp"
                    android:layout_height="38dp"
                    android:id="@+id/edTxtVelMedida"
                    android:inputType="none"
                    android:layout_marginLeft="10dp"
                    android:clickable="false"
                    android:editable="false"
                    android:focusable="false"
                    android:background="@drawable/abc_ab_transparent_dark_holo"
                    android:textColor="#c61d11"
                    android:textStyle="bold"/>

            </TableRow>

        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/tv_brujula"
                android:id="@+id/txtVwBrujula"
                android:layout_column="0"
                android:layout_marginTop="5dp"
                android:textSize="20sp"
                android:inputType="none"
                android:focusable="false"
                android:textStyle="bold"/>
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TableRow>

                <EditText
                    android:layout_width="150dp"
                    android:layout_height="38dp"
                    android:id="@+id/edTxtBrujula"
                    android:layout_column="0"
                    android:inputType="none|number"
                    android:focusable="false"
                    android:background="@drawable/abc_ab_transparent_dark_holo"
                    android:textStyle="bold"
                    android:textColor="#c61d11"/>

                <EditText
                    android:layout_width="140dp"
                    android:layout_height="38dp"
                    android:id="@+id/edTxtBrujdireccion"
                    android:layout_marginLeft="10dp"
                    android:inputType="textCapCharacters|none"
                    android:focusable="false"
                    android:background="@drawable/abc_ab_transparent_dark_holo"
                    android:textStyle="bold"
                    android:textColor="#c61d11"/>

            </TableRow>
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/tvgeopos"
                android:id="@+id/txtVwGeoPos"
                android:layout_column="0"
                android:layout_marginTop="5dp"
                android:inputType="none"
                android:focusable="false"
                android:textStyle="bold"
                android:textSize="20dp" />
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/txtvw_latitud"
                android:id="@+id/txtVwLatitud"
                android:layout_column="0"
                android:layout_marginTop="5dp"
                android:inputType="none"
                android:focusable="false"
                android:textStyle="bold"
                android:textSize="18dp" />
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <EditText
                android:layout_width="match_parent"
                android:layout_height="38dp"
                android:id="@+id/edTxtLatitud"
                android:layout_column="0"
                android:focusable="true"
                android:textStyle="bold"
                android:textColor="#c61d11"
                android:enabled="true"
                android:editable="true"
                android:focusableInTouchMode="false"
                android:background="@drawable/abc_ab_transparent_dark_holo"
                android:inputType="number" />
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/txtvw_longitud"
                android:id="@+id/txtVwLongitud"
                android:layout_column="0"
                android:layout_marginTop="5dp"
                android:inputType="none"
                android:textSize="18dp"
                android:focusable="false"
                android:textStyle="bold"/>
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <EditText
                android:layout_width="match_parent"
                android:layout_height="38dp"
                android:id="@+id/edTxtLongitud"
                android:layout_column="0"
                android:focusable="true"
                android:background="@drawable/abc_ab_transparent_dark_holo"
                android:textStyle="bold"
                android:textColor="#c61d11"
                android:enabled="true"
                android:editable="true"
                android:focusableInTouchMode="false"/>
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/btn_agregar_punto_interes"
                android:id="@+id/btnPuntoInteres"
                android:layout_column="0"
                android:textStyle="bold"
                android:layout_marginTop="5dp"
                android:textSize="15dp" />
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/btn_ver_punto_interes"
                android:id="@+id/btnVerPuntoInteres"
                android:layout_column="0"
                android:textStyle="bold"
                android:textSize="15dp" />
        </TableRow>

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <TableRow>

                <Button
                    style="?android:attr/buttonStyleSmall"
                    android:layout_width="150dp"
                    android:layout_height="wrap_content"
                    android:text="@string/btn_panico"
                    android:id="@+id/btnPanico"
                    android:layout_column="0"
                    android:textStyle="bold"
                    android:textSize="15dp"
                    android:textColor="#b2000c" />

                <Button
                    style="?android:attr/buttonStyleSmall"
                    android:layout_width="150dp"
                    android:layout_height="wrap_content"
                    android:text="@string/btn_ir_logix"
                    android:id="@+id/btnIrLogix"
                    android:textStyle="bold"
                    android:textSize="15dp" />

            </TableRow>
        </TableRow>
    </TableLayout>
</ScrollView>

这是最好的方法,或者我必须制作独立的应用程序,一个用于平板电脑,一个用于手机?

感谢您的建议!

【问题讨论】:

    标签: android android-layout user-interface android-studio


    【解决方案1】:

    不确定这是否有帮助,但我在图形布局中注意到如果您使用 Android Studio,它可以选择进行横向布局。它位于窗口左侧的下拉菜单中,其中包含 xml 布局的“设计”选项卡。下拉列表中的第一个选项是“创建景观变化”。希望有帮助。尽管您可能仍需要为更宽的屏幕重新设计。

    【讨论】:

      【解决方案2】:

      浏览此内容。您会对此有更好的了解。

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

      【讨论】:

        【解决方案3】:

        你可以创建两种布局,一种是小屏手机的默认布局,其xml文件将在标准布局文件夹中,第二种用于平板电脑,它应该在文件夹layout-sw600dp中.

        您应该做的是将您当前的手机优化布局复制到这个新文件夹 layout-sw600dp 并对其进行调整,直到它在平板电脑上看起来不错。

        实际上,如果它在手机上看起来不错,您应该可以对其进行调整,使其在平板电脑上看起来也不错。保持一种布局总是更好。

        【讨论】:

        • 嗨@mar​​cin_j,我怎样才能做到这一点?创建你说的文件夹和布局?感谢您的建议!
        • 是的,这个新文件夹你必须自己创建
        • 我是否必须在清单或代码中指定有关该新布局文件夹的内容?
        • 不只是创建文件夹
        【解决方案4】:

        我认为你应该从reading the documents 开始,它清楚地说明了你应该做什么。

        如果做不到这一点,tl;dr 版本是您可以为同一 Activity/Fragment 设置多种布局 - 一种用于小屏幕尺寸,一种用于大屏幕尺寸。

        【讨论】:

        • 嗨@panini 感谢您的快速回复...我阅读了文档,但我的英语不太好,我的应用程序中的问题是我在某些部分使用了 2 编辑文本,怎么能我把它放大,然后 1 占据屏幕的一半和另一半......?因为如您所见,我使用 150dp 作为 layout_width
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多