2017-09-05 75 views
1

我想在Android中進行響應式設計,即我需要這樣一種佈局,我將以編程方式添加視圖,並且會根據屏幕大小調整它們。 例如: 我想補充的佈局 10次當我加入他們,如果有地方每行僅三個視圖然後自動他們得到調整四行三列,即Android中的響應式佈局

[0, 0] [0,1] [0,2]

[1,0] [1,1] [1,2]

[2,0] [2,1] [2,2]

[3,0]

但作爲在橫向模式下,有更多的空間垂直

[0,0] [0,1] [0,2] [0,3] [0,4]

[ 1,0] [1,1] [1,2] [1,3] [1,4]

+2

使用GridView來顯示你的視圖 –

+0

是的,但如何添加響應? – Faiq

+0

或使用GridLayout管理器的Recyclerview –

回答

1

Use flexbox layout

builde.gradle添加

dependencies { 
... 
compile 'com.google.android:flexbox:0.3.0' 
} 

並在佈局xml中使用它。即

<com.google.android.flexbox.FlexboxLayout 
    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="wrap_content" 
    app:alignItems="center" 
    app:alignContent="center" 
    app:flexDirection="row" 
    app:flexWrap="wrap"> 

    ... 
</com.google.android.flexbox.FlexboxLayout> 
+0

在此佈局視圖不會到下一行。無論我添加多少個視圖 – Faiq

+0

@Faiq你都做錯了什麼。也許你必須對'flexbox'的父佈局進行一些修改。 –

+0

完成!達到目的!謝謝 – Faiq

1

看來Flexbox解決方案爲你工作,但是還有另外一種方法,可以提供這個問題的不同途徑。如果您不知道,可以實際定義具有相同名稱的不同XML佈局文件 - 其中1個用於縱向模式,另一個用於橫向模式。

創建新佈局文件時,如果右鍵單擊layout目錄並選擇新建>佈局資源文件,您可以在此處配置方向。在可用限定符部分,向下滾動到方向並將其添加到文件中。此時,您可以選擇此佈局的方向,如果您將文件命名爲相反方向,則您的應用程序將自動爲適合設備當前方向的視圖充氣。 Android Studio還將瞭解您在編輯器中選擇的不同佈局方向,並且您在Design選項卡中看到的屏幕將相應地進行調整,即橫向佈局文件將具有更多垂直空間以構建UI。

請注意,這增加了應用程序本身的複雜程度,因爲活動生命週期將需要考慮在內,因爲視圖正在被操作系統銷燬並重新繪製,以響應用戶切換的時間他們的設備的方向。

希望這有助於在這種情況下,或在其他一些情況下,你想根據設備的方向完成不同的佈局!

+0

感謝您的解決方案!順便說一句我想在flexlayout可能會自動銷燬視圖? – Faiq

+0

從來沒有與柔性佈局合作,所以我無法確定地告訴你。可能是因爲UI改變而被破壞 - 我認爲它會遵循Android架構的其餘部分@Faiq – DMP