2010-10-06 72 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