我需要在屏幕底部添加一个 textView 和 ImageView
我需要隐藏 textView 并以编程方式再次显示它
在这里,我有这张图片来解释问题以及应用程序的行为方式
左侧矩形显示显示的 TextView,第二个用于隐藏 Textview:
我尝试了下面的代码来做到这一点:
1-我向 ImageView 添加了单击侦听器,隐藏了 TextView 并更改了 ImageView 的 LayoutParams
2-再次单击它会显示 TextView 并在其上方对齐 ImageView
但问题是,当我运行代码时,ImageView 卡在屏幕顶部
我正在尝试使用以下代码务实地更改视图的 LayoutParams :
主要的.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView android:id="@+id/tv1
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
<ImageView android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignAbove="@id/tv1" />
</RelativeLayout>
和 MainActivity.java 类:
public class MainActivity extends Activity {
TextView tv;
ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
image = (ImageView) findViewById(R.id.img);
tv = (TextView) findViewById(R.id.tv1);
image.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
RelativeLayout.LayoutParams imageParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
//imageParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
imageParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
if(tv.getVisibility() == MyNavigationBar.GONE){
tv.setVisibility(MyNavigationBar.VISIBLE);
imageParams.addRule(RelativeLayout.ABOVE, R.id.bottomNavigationBar);
image.setLayoutParams(imageParams);
} else {
tv.setVisibility(MyNavigationBar.GONE);
imageParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
image.setLayoutParams(imageParams);
}
}
});
}
}
我认为问题在于函数: imageParams.addRule(RelativeLayout.ABOVE, R.id.bottomNavigationBar);
但它不起作用
我还尝试将 Id 手动设置为 textView,例如:
tv.setId(1);
并将以前的更改为:
imageParams.addRule(RelativeLayout.ABOVE, tv1.getId());
也不适合我!!
我想知道是我的代码还是android SDK中的问题!