例として、PercentRelativeLayoutを使用したAndroidサポートパーセントライブラリの使用

これらすべてのFrameLayout、LinearLayout、RelativeLayoutを使用して、Androidのレイアウトレイアウトに初めて出会ったとき。 インターフェイス要素の重量と重力の概念。 なぜ長い間htmlで行われていた方法でできなかったのか疑問に思いました。 マークアップをパーセンテージで示すことはどこで可能ですか? そして最後に、そのような機会が現れました。 もちろん、彼女は昨日現れませんでしたが、私は彼女に今だけ会いました、そして、私は彼らが食べるHabrの記事を見つけませんでした。



画像



それでは、この幸せを感じるには何が必要ですか? かなり必要です。アプリケーションのbuild.gradleを開き、そこに行を追加します



dependencies { compile 'com.android.support:percent:23.4.0' }
      
      





同期します。



それだけです、少なくともminSDK 14については、パーセントでマークするすべての楽しみが利用できます(私はあまりテストしていません)。



空のレイアウトは次のようになります。



 <android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:theme="@android:style/Theme.Black"> </android.support.percent.PercentRelativeLayout>
      
      





子のサイズと位置を示すために、次の属性を使用できます





この場合、レイアウトヘッダーで指定された名前空間に従って、 android:layout_widthPercentではなく、 app:layout_widthPercentのプレフィックスを指定する必要があります。 これらの属性の値はパーセントで割り当てられ、%記号が必須です。



実際、ほぼすべての属性の目的は、親レイアウトの割合としての直感的な幅、高さ、およびインデントです。



おそらく、layout_aspectRatioだけが明確にする価値があります。 この属性を使用すると、要素のアスペクト比を指定できます。 たとえば、画面幅の15%を占める正方形のボタンを作成するとします。 layout_widthPercent =“ 15%”を指定します。layout_heightPercent=“ 15%”を指定すると、ボタンは長方形になります。 したがって、layout_heightPercentを指定する必要はありませんが、layout_aspectRatio = "100%"を指定します。 この場合、幅は式layout_heightPercent * layout_aspectRatio / 100によって計算されます。



別の質問が発生する可能性があります。layout_marginStartPercentは、layout_marginLeftPercentとどのように異なり、layout_marginEndPercentはlayout_marginRightPercentとそれぞれ異なるのですか? ここではすべてが簡単です。これは、左から右に読む言語、Start = Left、および右から左に読む言語= Start = Rightのインターフェースのローカライズを確実にするためです。



PercentRelativeLayoutはRelativeLayoutの子孫です。したがって、Percent属性とともに、RelativeLayout属性を使用できます。たとえば、ボタンの高さをandroidとして指定できます。layout_height=“ wrap_content”およびアプリの幅:layout_heightPercent =“ 25%”。



もちろん、PercentRelativeLayoutは万能薬ではありません。たとえば、画面を反転させると、面白い特殊な効果が得られない場合があります。 自分で実験して、PercentRelativeLayoutを使用するときは、レイアウトのランドスケープバージョンを必ず実行する必要があると自分で結論付けました。



All Articles