2016-12-28 59 views
0

我的應用程序有7個按鈕,我想根據屏幕大小在屏幕上「自動對齊」。Android Studio:如何讓多個按鈕在佈局中自動流動?

所以在手機上,佈局看起來可能是這樣......

[button 1] [button 2] [button 3] 
[a really long button number 4] 
[button 5] [btn 6] [btn 7] 

...但在平板電腦上,所有的7個按鍵將在一行(或者最後的2個鍵會在下一行)。

[button 1] [button 2] [button 3] [a really long button number 4] [button 5] [btn 6] [btn 7] 

我試過使用RelativeLayout,但不能完全得到它的工作。 我可以使用3個LinearLayouts,只需接受總是有3行按鈕,但這不是很優雅。

有沒有辦法得到這個效果? 我搜索了很多,但我發現的一切都與按鈕點擊有關,這不是問題。 任何幫助表示讚賞! :)

編輯

更多的研究後,我同意片段整體的最佳解決方案,所以我接受這個答案。

但是,對於這個特定的應用程序,我決定使用一個Horizo​​ntalScrollView佔用最少量的UI房地產。下面是我的解決方案的標記...

<HorizontalScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 
      <!-- ### all 7 buttons here; only showing one for brevity --> 
      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"/> 
     </LinearLayout> 
    </HorizontalScrollView> 

回答

1

Fragments將在這裏很好用。

基本上,你會爲你想要的特定的屏幕密度定義一個特定的片段(或'視圖的一部分')。

對於手機,您可以定義一個片段button_phone_fragment.xml

對於平板電腦,您可以定義一個片段button_tablet_fragment.xml

你會再膨脹在你的代碼的佈局:

inflater.inflate(R.layout.button_phone_fragment, container, false); 

Here is彼此之間圍繞替換片段一些更多的信息。

0

您可能正在尋找稱爲「網格佈局」的東西。你們兩個最重要的屬性是「columnSpan」和「layout_row」

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/GridLayout1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:columnCount="3" 
android:rowCount="3" 
android:orientation="horizontal" 
tools:context="com.inducesmile.gridlayouttutorial.MainActivity" > 
<Space /> 

<Button 
    android:id="@+id/button1" 
    android:layout_gravity="left|top" 
    android:text="@string/button_name" /> 

<Button 
    android:id="@+id/button3" 
    android:layout_gravity="left|top" 
    android:text="@string/button_name" /> 

<Button 
    android:id="@+id/button2" 
    android:layout_column="0" 
    android:layout_gravity="left|top" 
    android:layout_row="0" 
    android:text="@string/button_name" /> 

<Button 
    android:id="@+id/button4" 
    android:layout_column="0" 
    android:layout_gravity="left|top" 
    android:layout_row="2" 
    android:text="@string/button_name" /> 

<Button 
    android:id="@+id/button5" 
    android:layout_column="1" 
    android:layout_row="2" 
    android:layout_columnSpan="2" 
    android:layout_gravity="fill" 
    android:text="@string/button_name" /> 

寫上我的智能手機這個代碼,似乎有點凌亂:)