Android - 设置可见性不会改变 RelativeLayout 的可见性



我正在尝试使用visibility属性操纵某个点击事件中RelativeLayout的可见性。

将事件处理程序添加到每个列表项后,我可以检查可见性状态是否正在更改,但在 Android 模拟器中,屏幕根本没有变化(我已经在 XML 中使用 visibility="visible" 对其进行了测试,以确保它会显示(。

下面是单击处理程序的代码:

someHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater layoutSeed = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View baseView = layoutSeed.inflate(R.layout.activity_listings, null, false);
RelativeLayout popup = (RelativeLayout) baseView.findViewById(R.id.popupContainer);
Log.d("Tag1",Integer.toString(popup.getVisibility()));
popup.setVisibility(View.VISIBLE);
Log.d("Tag2",Integer.toString(popup.getVisibility()));
}
});

日志猫显示状态更改。我还尝试在baseView和弹出窗口以及popup.bringToFront()和这些的组合上invalidate()postInvalidate()

,到目前为止没有任何效果。有什么建议或可能的调查路线吗?

如果您尝试更改可见性的相对布局已经在屏幕中,则无需再次对其进行膨胀。请引用已经膨胀的并更改其可见性

holder.relativeLayout.setVisibility(View.GONE);
">

消失"将从布局中删除视图。使用"不可见"而不是"消失"。

当您单击按钮时,您的视图将被按钮的OnClick(View v)方法替换。 所以你只是写下来

v.popup(View.GONE)

看看这行代码:

View baseView = layoutSeed.inflate(R.layout.activity_listings, null, false);
RelativeLayout popup = (RelativeLayout) baseView.findViewById(R.id.popupContainer);
Log.d("Tag1",Integer.toString(popup.getVisibility()));

实际上,您正在尝试创建一个新baseView并将其设置为gone.如果要将行项设置为gone,则应暂时将其从适配器中删除,例如(如果将 itemView 设置为消失,则应小心适配器的后续view(:

removeItemAt(getAdapterPosition()) 
notifyDataRemoved(getAdapterPosition())

最新更新