2016-07-05 72 views
0

我有一個應用程序顯示LinearLayout(這是一個ScrollView內)不同的圖像。如何訂購線性佈局內的元素?

我想在用戶按下按鈕時重新排列布局中的元素。例如:如果我有| pic1 | pic2 | pic3 |顯示在佈局中,但我想對它們重新排序,使它們顯示爲| pic2 | pic1 | pic3 |

這是我的 「activity_main.xml中」 文件在那裏我有我的所有圖片:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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" 
    android:background="@drawable/map" 
    tools:context="dis2.widget.MainActivity"> 

    <HorizontalScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="80dp" 
     android:id="@+id/contactsScrollView" 
     android:fillViewport="false" 
     android:visibility="visible" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="26dp"> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:visibility="visible"> 

      <ImageView 
       android:layout_width="100dp" 
       android:layout_height="wrap_content" 
       android:src="@drawable/pic1" 
       android:id="@+id/pic1ID" 
       android:visibility="gone" /> 

      <ImageView 
       android:layout_width="100dp" 
       android:layout_height="wrap_content" 
       android:src="@drawable/pic2" 
       android:id="@+id/pic2ID" 
       android:visibility="gone" /> 

      <ImageView 
       android:layout_width="100dp" 
       android:layout_height="wrap_content" 
       android:src="@drawable/pic3" 
       android:id="@+id/pic3ID" 
       android:visibility="visible" /> 

     </LinearLayout> 
    </HorizontalScrollView> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Reorder" 
     android:id="@+id/reorderB" 
     android:layout_marginBottom="114dp" 
     android:onClick="reorder" 
     android:layout_alignParentBottom="true" /> 


</RelativeLayout> 

回答

1

設置一個ID,你的LinearLayout:

android:id="@+id/myLinearLayout 

,並在Java中:

public void reorder() { 

    LinearLayout myLinearLayout = (LinearLayout) findViewById(R.id.myLinearLayout); 
    // get number of children 
    int childcount = myLinearLayout.getChildCount(); 
    // create array 
    View[] children = new View[childcount]; 

    // get children of linearlayout 
    for (int i=0; i < childcount; i++){ 
     children[i] = myLinearLayout.getChildAt(i); 
    } 

    //now remove all children 
    myLinearLayout.removeAllViews(); 

    //and resort, first position 
    myLinearLayout.addView(children[2]); 
    //second position 
    myLinearLayout.addView(children[0]); 
    //etc. 
} 

看看Droid: How to reorder a linearlayouts contents programmatically?Get all child views inside LinearLayout at once