我正在尝试使用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())