假设您使用的是 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>