0

我目前正在尝试开发一个 android 应用程序,但我已经被困了一段时间,现在试图在活动中缩放视图。

在图片中,您可以看到两种设备的分辨率宽度都是 10 像素只是为了让你们更容易理解)。屏幕尺寸从5 英寸10 英寸不等。蓝色矩形只是一个 EditText,我想在不同的设备上进行缩放。

如您所见,EditText两个设备中的像素大小相同,但像素数量不同。我希望两个设备看起来完全一样,我已经尝试了一切来解决这个问题,但似乎没有什么对我有用。

(这只是我为显示问题而绘制的示例图像,但第二张图像是我尝试制作的以及它真正出错的地方)

在此处输入图像描述

这就是我想要解决的问题:

在此处输入图像描述

4

2 回答 2

0

假设您使用的是 Android Studio。您可以导入此百分比库,该库使您能够为各自的宽度和高度设置百分比。这将使您能够根据设备(即手机、7 英寸平板电脑、10 英寸平板电脑)设置不同的百分比宽度和高度,并获得相同的外观和感觉。我在当前的项目中使用了它,并且效果很好。

并确保每个设备都有不同的 XML 文件,即文件夹应如下所示:

layout (XML files for phone),
layout-sw600dp (XML files for 7 inch Tablet),
layout-sw720dp (XML files for 10 inch Tablet),
layout-w600dp (XML files for 7 inch Tablet),
layout-w720dp (XML files for 10 inch Tablet).

然后添加 AndroidManifest.xml 上支持的屏幕,如下所示。

只需将以下依赖项添加到您的 gradle 即

compile 'com.android.support:percent:25.3.0'

然后使用如下所示...注意百分比是如何用于设置布局宽度和高度的,即

app:layout_widthPercent="100%"
app:layout_heightPercent="35%"

(Refer to code below)

    *********************************************************************
    //** activity_main.xml
    *********************************************************************

    <android.support.percent.PercentRelativeLayout
        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"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:orientation="vertical"
        tools:context=".MainActivity">

        <!-- Begin Header Section -->
        <RelativeLayout
            android:id="@+id/headerSection"
            app:layout_widthPercent="100%"
            app:layout_heightPercent="55%">

            <android.support.v4.view.ViewPager
                android:id ="@+id/spotlightViewPager"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content">
            </android.support.v4.view.ViewPager>

            <RelativeLayout
                android:id="@+id/headerRight"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true" >

                <Button
                    android:id="@+id/shareButton"
                    android:layout_width="wrap_content"
                    android:layout_height="30dp"
                    android:layout_marginRight="5dp"
                    android:layout_marginTop="5dp"
                    android:theme="@style/ShareButtonBackgroundTheme"
                    android:background="@drawable/shape"
                    android:text="@string/mainShare" />
            </RelativeLayout>

        </RelativeLayout>
        <!-- End Header Section -->

        <!-- Begin Social & Weather Section -->
        <RelativeLayout
            android:id="@+id/socialWeatherSection"
            android:layout_below="@id/headerSection"
            app:layout_widthPercent="100%"
            app:layout_heightPercent="10%">

            <RelativeLayout
                android:id="@+id/socialWeatherLeft"
                android:layout_width="140dip"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true" >

                <GridView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:id="@+id/socialmediaGridView"
                    android:horizontalSpacing="1dp"
                    android:stretchMode="columnWidth"
                    android:gravity="center"
                    android:background="#e5e5e5">
                </GridView>
            </RelativeLayout>

            <HorizontalScrollView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/socialWeatherLeft"
                android:scrollbars="none"
                android:id="@+id/hsv"
                android:layout_margin="1dp"
                android:fillViewport="false">

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <GridView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:id="@+id/weatherGridView"
                        android:horizontalSpacing="1dp"
                        android:stretchMode="columnWidth"
                        android:gravity="center"
                        android:background="#e5e5e5">
                    </GridView>

                </LinearLayout>

            </HorizontalScrollView>

        </RelativeLayout>
        <!-- End Social & Weather Section -->

        <!-- Begin Grid Navigation Section -->
        <RelativeLayout
            android:id="@+id/gridSection"
            android:layout_below="@+id/socialWeatherSection"
            app:layout_widthPercent="100%"
            app:layout_heightPercent="35%">

            <GridView
                android:id="@+id/gridView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:verticalSpacing="2dp"
                android:horizontalSpacing="2dp"
                android:layout_alignParentLeft="true"
                android:numColumns="3"
                android:stretchMode="columnWidth"
                android:gravity="center"
                android:background="#e5e5e5">
            </GridView>

        </RelativeLayout>
        <!-- End Grid Navigation Section -->

    </android.support.percent.PercentRelativeLayout>

**************************************************************
//** AndroidManifest.xml
**************************************************************

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="foo.foo.foo">

    <!-- permission for GPS location -->
    <!--<uses-permission android:name="android.permission.INTERNET" />-->
    <!--<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />-->
    <!--<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />-->
    <!--<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />-->
    <!--<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />-->
    <!--<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />-->
    <!--<uses-permission android:name="android.permission.CALL_PHONE" />-->
    <!--<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>-->
    <!--<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />-->

    <!-- Tablet Fix -->
    <uses-feature android:name="android.permission.INTERNET" android:required="false"/>
    <uses-feature android:name="android.permission.ACCESS_FINE_LOCATION" android:required="false"/>
    <uses-feature android:name="android.permission.ACCESS_NETWORK_STATE" android:required="false"/>
    <uses-feature android:name="android.permission.ACCESS_WIFI_STATE" android:required="false"/>
    <uses-feature android:name="android.permission.CHANGE_WIFI_STATE" android:required="false"/>
    <uses-feature android:name="android.permission.CHANGE_NETWORK_STATE" android:required="false"/>
    <uses-feature android:name="android.permission.CALL_PHONE" android:required="false"/>
    <uses-feature android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="false"/>
    <uses-feature android:name="android.permission.READ_EXTERNAL_STORAGE" android:required="false"/>

    <application
        android:name=".TestApplication"
        android:allowBackup="true"
        android:hardwareAccelerated="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".SplashScreen" android:theme="@android:style/Theme.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name=".MAINACTIVITY" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>
        </activity>

        <activity android:name=".AgencyActivity"></activity>

    </application>

    <supports-screens
        android:resizeable="false"
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true"
        android:anyDensity="true"
        android:requiresSmallestWidthDp="320"
        android:compatibleWidthLimitDp="320"
        android:largestWidthLimitDp="720"/>

    <compatible-screens>
        <!--no small size screens -->

        <!--all normal size screens -->
        <screen android:screenSize="normal" android:screenDensity="ldpi" />
        <screen android:screenSize="normal" android:screenDensity="mdpi" />
        <screen android:screenSize="normal" android:screenDensity="hdpi" />
        <screen android:screenSize="normal" android:screenDensity="xhdpi" />

        <!-- all large size screens -->
        <screen android:screenSize="large" android:screenDensity="ldpi" />
        <screen android:screenSize="large" android:screenDensity="mdpi" />
        <screen android:screenSize="large" android:screenDensity="hdpi" />
        <screen android:screenSize="large" android:screenDensity="xhdpi" />

        <!-- all xlarge size screens -->
        <screen android:screenSize="xlarge" android:screenDensity="ldpi" />
        <screen android:screenSize="xlarge" android:screenDensity="mdpi" />
        <screen android:screenSize="xlarge" android:screenDensity="hdpi" />
        <screen android:screenSize="xlarge" android:screenDensity="xhdpi" />

        <!-- Special case for Nexus 7 -->
        <screen android:screenSize="large" android:screenDensity="213" />

        <screen android:screenSize="normal" android:screenDensity="480" />
        <screen android:screenSize="large" android:screenDensity="480" />
        <screen android:screenSize="xlarge" android:screenDensity="480" />`

    </compatible-screens>

</manifest>
于 2017-07-25T16:49:14.473 回答
0

基本上像这样的东西,应该为你做的工作:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:weightSum="100">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="5" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="5" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="5" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10"
        android:orientation="horizontal"
        android:weightSum="100">

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="10" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="10" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="10" />

    </LinearLayout>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="5" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="5" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10" />

</LinearLayout>
于 2017-07-25T16:40:52.023 回答