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>
Iドンすなわちレイアウト幅と高さを設定するために使用されている方法に注目してください...使用あなたの質問をよく理解していない。あなたは正確に何を達成しようとしていますか?すべてのデバイスで編集テキストの幅がpxであるようにしますか?それともできるだけ幅を作っていますか? xmlレイアウトを投稿してください。 – allo86
@Al Lelopath私はレイアウトがまったく同じであることを望んでいます。ご覧のように、editTextはお互いに大きなものですが、大きなデバイスのものはもっと大きくなるはずです。可能であれば、 'dp'の代わりに '%'を使って作業したいと思いますが、そうではありません。 – muyat
ここでは、maxWidthが中心になるでしょう –