2010-10-06 45 views
6

我有一個線性佈局,其中有五個TextViews。假設用戶點擊第三個TextView;我想將TextView擴展到整個屏幕。換句話說,我想將第三個TextView作爲全屏顯示在與其他文本視圖相同的活動中。我該怎麼做呢?展開Android查看全屏

回答

1

是的,我明白你的意思。看下面的例子,我已經測試過它以確保它能正常工作。這可能不是最優雅的解決方案,但這裏有。

這一次,我已經設置高度爲0,重量爲1爲每個文本視圖。這使得每個視圖的高度相等。

<TextView 
    android:id="@+id/textview1" 
    android:layout_width="fill_parent" 
    android:layout_height="0px" 
    android:layout_weight="1" 
    android:text="text1" 
/> 

在活動代碼,我有以下實例聲明:

private TextView tv1; 
private TextView tv2; 
private TextView tv3; 
private TextView tv4; 
private TextView tv5; 

private boolean singleViewExpanded = false; 

private OnClickListener myOnClickListener = new OnClickListener(){   
    public void onClick(View arg0) {   

     if(singleViewExpanded)     
     { 
      showAllViews();  
      singleViewExpanded = false; 
     } 
     else 
     { 
      // Hide all views apart from the clicked one 
      hideAllViews(); 
      arg0.setVisibility(View.VISIBLE); 
      singleViewExpanded = true; 
     } 
    }   
}; 

singleViewExpanded,您可以跟蹤您是否顯示所有視圖或只有一個。 onClickListener在這裏被定義,以便我們可以爲每個TextView設置它。

這些都是顯示和隱藏方法:

private void showAllViews() 
{ 
    tv1.setVisibility(View.VISIBLE); 
    tv2.setVisibility(View.VISIBLE); 
    tv3.setVisibility(View.VISIBLE); 
    tv4.setVisibility(View.VISIBLE); 
    tv5.setVisibility(View.VISIBLE); 

} 

private void hideAllViews() 
{ 
    tv1.setVisibility(View.GONE); 
    tv2.setVisibility(View.GONE); 
    tv3.setVisibility(View.GONE); 
    tv4.setVisibility(View.GONE); 
    tv5.setVisibility(View.GONE); 
} 

最後,線了onCreate方法內部的onclick處理:

tv1 = (TextView)findViewById(R.id.textview1); 
    tv2 = (TextView)findViewById(R.id.textview2); 
    tv3 = (TextView)findViewById(R.id.textview3); 
    tv4 = (TextView)findViewById(R.id.textview4); 
    tv5 = (TextView)findViewById(R.id.textview5); 

    tv1.setOnClickListener(myOnClickListener); 
    tv2.setOnClickListener(myOnClickListener); 
    tv3.setOnClickListener(myOnClickListener); 
    tv4.setOnClickListener(myOnClickListener); 
    tv5.setOnClickListener(myOnClickListener); 
3

如果您最初設置每個文本視圖的高度如下WRAP_CONTENT:

<TextView 
    android:id="@+id/textview1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="text1" 
/> 

然後附上切換如下WRAP_CONTENT和FILL_PARENT之間的layout_height一個單擊處理程序,你應該實現你想要的。

final TextView tv1 = (TextView)findViewById(R.id.textview1); 

    tv1.setOnClickListener(new OnClickListener(){   
     public void onClick(View arg0) {     
      if(tv1.getLayoutParams().height == LayoutParams.FILL_PARENT) 
       tv1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
      else 
       tv1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));     
     }   
    }); 

如果您最初想要分隔文本視圖,還可以使用layout_weight。

+0

感謝您的答覆,但是這個代碼不執行任何操作。在我的程序中,我設計了5個文本視圖,這些視圖在垂直方向的線性佈局下。我已經用第三個文本視圖的onClickListner設置了上面提到的代碼。但是當第三個文本視圖被點擊時,它仍然是一樣的,它沒有被擴展並且與其他文本視圖重疊。 – 2010-10-07 04:22:29

+0

是的,它的工作,問題是,我的線性佈局容器的佈局寬度和高度Wrap_Content。將其更改爲Fill_Parent後,它就可以工作。但現在的問題是,當我點擊文本視圖時,它只會向下擴展,即它覆蓋文本視圖下方的空間。但是在這個文本視圖上方有一些視圖。我希望這種觀點能夠向上和向下擴展,從而覆蓋整個屏幕。 – 2010-10-07 04:34:56