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