我开发了一个简单的应用程序,其中包含一个文本视图。我的问题是我希望在按钮单击事件时在不可见的文本视图中可见。
在加载时我这样做
myTextView.setVisible(View.GONE);
然后在按钮单击事件中,我这样做。
myTextView.setVisible(View.VISIBLE);
textview 是可见的,但它在 TextView 下方重叠意味着 myTextView 不能包含空间。那我现在能做什么?
采用
myTextView.setVisible(View.INVISIBLE);
代替
myTextView.setVisible(View.GONE);
坚持布局中的空间......
如果您使用的是相对布局,android:layout_below="id_of_above_text_view"
请在第二个文本视图中指定。
如果你没有在相对布局中指定与视图的关系,它将出现在另一个之上
我相信,对您的代码稍作改动应该可以使其正常工作。
myTextView.setVisibility(View.INVISIBLE);
点击按钮后,
myTextView.setVisibility(View.VISIBLE);
为了在java代码中做这件事,试试这个(虽然我自己还没有尝试过)......
RelativeLayout rl = new RelativeLayout(this);
ImageView iv = new ImageView(this);
iv.setImageResource(R.drawable.xxx);
TextView txt = new TextView(this);
txt.setText("XXX");
rl.addView(iv,0);
rl.addView(txt,1);
试试这个:
RelativeLayout layout = new RelativeLayout(this);
TextView tv1 = new TextView(this);
tv1.setText("A");
tv1.setId(1);
TextView tv2 = new TextView(this);
tv2.setText("B");
tv2.setId(2);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.FILL_PARENT);
lp.addRule(RelativeLayout.BELOW, tv1.getId());
layout.addView(tv1);
layout.addView(tv2, lp);
当您更改可见性时,调用invalidate()
myTextView 的父视图(此处为布局)或布局的根视图(layout.getRootView()
)
这将在按下相应按钮时显示和隐藏文本。如果您想使用按钮控制多个文本,这非常有用
1)XML文件:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:orientation="vertical"
android:gravity="center_vertical">
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
<Button
android:text="The Origin"
android:id="@+id/btnOrigin"
android:onClick="buttonOnClick"/>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
<TextView
android:id="@+id/txtOrigin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/about"
android:textColor="#000"
android:textSize="@dimen/text_body"
android:gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:visibility="gone"/>
</TableRow>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:orientation="vertical"
android:gravity="center_vertical">
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
<Button
android:text="Vision"
android:id="@+id/btnVision"
android:onClick="buttonOnClick"/>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" >
<TextView
android:id="@+id/txtVision"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/vision"
android:textColor="#000"
android:textSize="@dimen/text_body"
android:gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:visibility="gone"/>
</TableRow>
</LinearLayout>
2) JAVA代码
private TextView txtOrigin, txtVision;
public void buttonOnClick(View view) {
switch (view.getId()) {
case R.id.btnOrigin:
txtOrigin = (TextView) findViewById(R.id.txtOrigin);
txtOrigin.setVisibility(View.VISIBLE);
txtVision = (TextView) findViewById(R.id.txtVision);
txtVision.setVisibility(View.INVISIBLE);
break;
case R.id.btnVision:
txtVision = (TextView) findViewById(R.id.txtVision);
txtVision.setVisibility(View.VISIBLE);
txtOrigin = (TextView) findViewById(R.id.txtOrigin);
txtOrigin.setVisibility(View.INVISIBLE);
break;
}
}