2014-01-07 102 views
5

嗨,我有以下XML:移動佈局位置編程線性佈局

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <LinearLayout 
     android:id="@+id/wrapper" 
     android:layout_width="fill_parent" 
     android:layout_height="50dp" 
     android:layout_margin="10dip" 
     android:weightSum="1" 
     android:background="#000" 
     android:orientation="horizontal"> 
     <TextView 
      android:id="@+id/textMessage" 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight = ".9" 
      android:layout_gravity="center" 
      android:layout_margin="5dip" 
      android:paddingLeft="10dip" 
      android:background="#FFF" 
      android:text="TEXT NOT SET" 
      android:textColor="@android:color/white" /> 
     <ImageView 
      android:id="@+id/thumbPhoto" 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight = ".1" 
      android:src="@drawable/ic_contact_default"/> 
    </LinearLayout> 
</LinearLayout> 

我想要做的是有我的ImageView換到左邊我的文字信息的編程的位置。

這可以通過將我的ImageView放置在TextView上方通過xml完成​​。不過,我想通過編程實現相同的結果。

假設我有這在我的適配器

public View getView(int position, View convertView, ViewGroup parent) { 


     View row = convertView; 
     if (row == null) { 
       LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       row = inflater.inflate(R.layout.chat_item, parent, false); 
     } 

     wrapper = (LinearLayout) row.findViewById(R.id.wrapper); 

     // How should i change the position of my ImageView ?? 
     wrapper.setGravity([some_condition] ? Gravity.LEFT : Gravity.RIGHT); 

     return row; 
} 
+0

嘗試LayoutParams。 –

回答

7

嘗試這樣....

ImageView imageView= (ImageView)yourLinearLayout.findViewById(R.id.thumbPhoto); 
yourLinearLayout.removeViewAt(1); 
yourLinearLayout.addView(0, imageView); 

通過使用此行

// How should i change the position of my ImageView ?? 
     wrapper.setGravity([some_condition] ? Gravity.LEFT : Gravity.RIGHT); 

它沒有顯示出效果。因爲在這裏你將重力應用於線性佈局,所以這個重力將其整個內容向左或向右對齊。

+0

謝謝你的建議,但是我不能將它應用於addViewAt(int,view)但是我嘗試使用addView(int,view,some_other_param) – Jeremy

+0

是的,它被假設爲yourLinearLayout.addView(view,index)Thx 。我現在將接受你的答案.. – Jeremy

+0

任何方式..你明白了..享受。 – saa