Android(自適應)

一、使用layout_weight屬性方法

目前最為推薦的Android多螢幕自適應解決方案。該屬性的作用是決定控制項在其父布局中的顯示權重,一般用於線性布局中。layout_weight屬性值越小,則對應的layout_width或layout_height的優先級就越高,一般橫向布局中,決定的是layout_width的優先級;縱向布局中,決定的是layout_height的優先級。目前有兩種方法: (1)傳統使用方法:將layout_width和layout_height設置為fill_parent,通過layout_weight屬性控制控制項的顯示比例,當layout_weight越小,控制項顯示比例就越大。但是,如果布局中控制項較多且顯示比例不相同時,傳統使用layout_weight屬性的方法將比較麻煩。 (2)0px設值法:即使layout_width="0dp"或layout_height="0dp",再結合layout_weight屬性正比例控制控制項的顯示,該方法有效解決了當前Android開發中碎片化問題之一。

功能:將控制項的layout_width和layout_height兩個屬性封裝成4個style

檔名res/values/style_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 全螢幕拉伸-->
<style name="layout_full">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
</style>
<!-- 固定自身大小-->
<style name="layout_wrap">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
</style>
<!-- 橫向分布-->
<style name="layout_horizontal" parent="layout_full">
<item name="android:layout_width">0px</item>
</style>
<!-- 縱向分布-->
<style name="layout_vertical" parent="layout_full">
<item name="android:layout_height">0px</item>
</style>
</resources>

Layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        style="@style/layout_full"
        android:orientation="vertical">
        <LinearLayout
                style="@style/layout_vertical"
                android:layout_weight="1"
                android:orientation="horizo​​ntal">
                 <View
                         style="@style/layout_horizo​​ntal"
                         android:background="#aa0000"
                         android:layout_weight="1"/>
                 <View
                         style="@style/layout_horizo​​ntal"
                         android:background="#00aa00"
                         android:layout_weight="4"/>
                 <View
                         style="@style/layout_horizo​​ntal"
                         android:background="#0000aa"
                         android:layout_weight="3"/>
                 <View
                         style="@style/layout_horizo​​ntal"
                         android:background="#aaaaaa"
                         android:layout_weight="2"/>                
        </LinearLayout>
        <LinearLayout
                style="@style/layout_vertical"
                android:layout_weight="2"
                android:orientation="vertical">
                <View
                         style="@style/layout_vertical"
                         android:background="#ffffff"
                         android:layout_weight="4"/>        
                 <View
                         style="@style/layout_vertical"
                         android:background="#aa0000"
                         android:layout_weight="3"/>
                 <View
                         style="@style/layout_vertical"
                         android:background="#00aa00"
                         android:layout_weight="2"/>
                 <View
                         style="@style/layout_vertical"
                         android:background="#0000aa"
                         android:layout_weight="1"/>
        </LinearLayout>
</LinearLayout>

results matching ""

    No results matching ""