2014-10-29 126 views
0

我想刪除添加的文本框,並添加其他基於從微調框中選擇的內容。 這裏是我的代碼: 在XML如何刷新佈局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:background="#f4f4f4" 
android:id="@+id/taskoptionfragmentlinearlayout" > 


<TextView 
     android:layout_marginTop="10dp" 
     android:textStyle="bold" 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Select A Search Option" /> 
    <Spinner 
     android:layout_marginTop="20dp" 
     android:id="@+id/gis_search" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
    <ProgressBar 
     android:id="@+id/progressBar1" 
     style="?android:attr/progressBarStyleLarge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     /> 
    </LinearLayout> 

類:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)   
    { 
    final View rootView = inflater.inflate(R.layout.fragment_tasklist_options, container, false); 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, 
       int position, long id) { 
      ll = (LinearLayout)rootView.findViewById(R.id.taskoptionfragmentlinearlayout); 
      //create textfields.... 
      TextView tv = new TextView(getActivity()); 
      tv.setText(INPUTFLDLABELAArray.get(i)); 
      tv.setGravity(Gravity.RIGHT); 
      tv.setTextSize(18); 
      tv.setTypeface(Typeface.DEFAULT_BOLD); 
      tv.setPadding(0, 0, 15, 0); 
      ll.addView(tv); 
     } 

我總結了代碼,使其短。 因此,當選擇微調器中的項目時,顯示文本字段。那麼當選擇另一個項目時,將在前面的文本框下顯示一個文本框。所以我想要的是(刷新/重置)佈局,以便每次選擇某個項目時,舊的文本字段將被刪除並添加新的項目。

+0

你需要的可能只是'll.invalidate()':http://developer.android.com/reference/android/view/View.html#invalidate () – Blacklight 2014-10-29 11:03:46

+0

我試過了(在ll的聲明下),但沒有任何改變 – 2014-10-29 11:06:13

+0

在聲明之下還爲時過早,在添加'TextView'之後,它必須是最後的調用。另外,如果你想替換視圖,你需要在添加之前刪除舊視圖:http://developer.android.com/reference/android/view/ViewGroup.html#removeAllViews() – Blacklight 2014-10-29 11:07:40

回答

0

嘗試添加新的之前調用ll.removeAllViews()

+0

這個工程,但這也會刪除微調......不僅是以編程方式添加的內容。 – 2014-10-29 11:12:30

+0

我在調用ll.removeAllViews()後添加了微調器和其他所有東西。謝謝 – 2014-10-29 11:30:28

+0

這不是很乾淨。使用另一個'LinearLayout'僅用於'TextView',而不用沒有包裝的TextView。然後僅在該容器佈局上操作。 – Blacklight 2014-10-29 11:37:22