将Android视图展开为全屏

时间:2010-10-06 10:05:56

标签: android

我有一个线性布局,有五个TextView。假设用户点击第三个TextView;我想将TextView扩展到整个屏幕。换句话说,我想在其他文本视图之上的同一活动中将第三个TextView显示为全屏。我该怎么做?

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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);