MBH*_*MBH 1 android android-layout
我需要在屏幕底部添加一个 textView 和 ImageView
我需要隐藏 textView 并以编程方式再次显示
在这里,我有这张图片来解释问题以及应用程序的行为方式
左侧矩形显示显示的 TextView,第二个矩形显示隐藏 Textview:

我尝试了下面的代码来做到这一点:
1- 我向 ImageView 添加了点击侦听器,隐藏了 TextView 并更改了 ImageView 的 LayoutParams
2-再次单击它会显示 TextView 并将 ImageView 对齐在其上方
但问题是当我运行代码时,ImageView 被卡在屏幕顶部
我正在尝试使用以下代码务实地更改视图的 LayoutParams:
主文件
<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>
Run Code Online (Sandbox Code Playgroud)
和类 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);
}
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我认为问题在于函数: imageParams.addRule(RelativeLayout.ABOVE, R.id.bottomNavigationBar);
但它不起作用
我还尝试将 Id 手动设置为 textView,例如:
tv.setId(1);
Run Code Online (Sandbox Code Playgroud)
并将之前的更改为:
imageParams.addRule(RelativeLayout.ABOVE, tv1.getId());
Run Code Online (Sandbox Code Playgroud)
也对我不起作用!!
我想知道问题是在我的代码中还是在 android SDK 中!!
似乎layout_alignWithParentIfMissing会容易得多:
<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"
android:layout_alignWithParentIfMissing="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
并且只在代码中切换 tv1 的可见性:
image.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(tv.getVisibility() == View.GONE){
tv.setVisibility(View.VISIBLE);
} else {
tv.setVisibility(View.GONE);
}
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2363 次 |
| 最近记录: |