2014-02-15 79 views
0

我有兩個線性佈局,主佈局包含兩個文字瀏覽和一個內部佈局,其中包含一個按鈕和textview ...我想改變我的內部佈局按鈕的位置,我想要在最後textivew在主線性佈局.. 這裏是我的xml文件....如何在點擊後更改按鈕的位置?

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

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="Personal Information" 
      android:textSize="30sp" /> 
     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" > 
     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Email" /> 

     <Button 
      android:id="@+id/btnAddEmail" 
      android:layout_width="93dp" 
      android:layout_height="wrap_content" 
      android:text="Add" /> 
    </LinearLayout> 
    <TextView 
     android:id="@+id/tvEmail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     /> 
    </LinearLayout> 

</ScrollView> 

回答

0

一種解決方案將是在其他位置的另一個無形的按鈕,當你想「移動」按鈕,你讓當前的「隱形」並切換另一個。

+0

但我有一個點擊列表上的按鈕..如果我改變了知名度,所以我怎麼能做同樣的工作在其他我想要看到@alfasin – user3302944

+0

答案嵌入在你的問題... – alfasin

+0

我不dont懂得如何? – user3302944

0

像alfasin說在你的佈局中有兩個按鈕。根據您的要求將一個設置爲GONE或INVISIBLE的可見性。 INVISIBLE只會從視圖中隱藏按鈕,但顯示按鈕所需的空間將被保留。 GONE將隱藏按鈕,並且佈局中佔用的空間也將被刪除。

btn.setVisibilty(View.GONE) 
btn.setVisibilty(View.INVISIBLE) 
btn.setVisibilty(View.VISIBLE) 

如果您希望兩個按鈕都觸發相同的操作,請爲兩個按鈕註冊相同的點擊偵聽器。根據點擊的按鈕進行額外檢查以切換可見性。

0

在最後一個TextView下面添加第二個按鈕,並將其可見性設置爲「不見了」。

XML:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="Personal Information" 
     android:textSize="30sp" /> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Email" /> 

     <Button 
      android:id="@+id/btnAddEmail" 
      android:layout_width="93dp" 
      android:layout_height="wrap_content" 
      android:text="Add" /> 
    </LinearLayout> 
    <TextView 
     android:id="@+id/tvEmail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     /> 
    <Button 
     android:id="@+id/btnNew" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:visibility="gone" /> 
</LinearLayout> 

讓您的按鈕,初始化OnClickListener,做你的邏輯。然後切換兩個按鈕的可見性狀態,然後完成:

private Button mAddMail; 
private Button mNewButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Inflate your layout 
    setContentView(R.layout.activity_main); 

    mAddMail = (Button) findViewById(R.id.btnAddEmail); 
    mNewButton = (Button) findViewById(R.id.btnNew); 

    mAddMail.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Do your logic 
      // .... 
      mAddMail.setVisibility(View.GONE); 
      mNewButton.setVisibility(View.VISIBLE); 
     } 
    }); 
} 

使用此方法,您不會直接更改按鈕位置。這更像是一個小小的解決方法。你總是有兩個按鈕,你只能改變他們的知名度。

+0

但我在我的項目中有這麼多按鈕..我認爲它會進入一個非常冗長的過程..... Thanx的響應 – user3302944