- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 RecyclerView
,当您在 RecyclerView
中 LongClick
一行时,我会显示一个隐藏的 LinearLayout
在那一行。为此,在我的 public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
中,我使用以下内容
LinearLayout REACTION_LAYOUT = RecyclerItem.FindViewById<LinearLayout>(Resource.Id.reaction_layout);
RecyclerItem.LongClick += (sender, e) => { OnLongClick(REACTION_LAYOUT); };
REACTION_LAYOUT
是我使用以下内容展示的布局
private void OnLongClick(LinearLayout _ReactionLayout)
{
try
{
_ReactionLayout.Visibility = ViewStates.Visible;
}
catch (Exception X)
{
Log.Info("1022585", "CLICK (ERROR) : " + X.Message);
}
}
这按预期工作,现在我想要的是当用户触摸行外的任何地方时隐藏 REACTION_LAYOUT
,这意味着 RecyclerView 中的其他行或其他任何地方
我该怎么做?
我尝试使用的方法是在我的适配器的 OnCreateViewHolder
中检测 parent
的触摸,如下所示
parent.Click += (sender, e) => { OnParentClick(REACTION_LAYOUT); };
这有效,但它禁用了回收站 View 上的滚动。
实现此目标的最佳方法是什么?
编辑:RecyclerView Activity 如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/main_message_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorPrimary"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:orientation="vertical">
<include layout="@layout/toolbar_messages"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="4.5dp"
android:layout_marginTop="3dp"
android:background="@drawable/shadow"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="fill_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvMessages"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:layout_alignParentTop="true"
android:paddingBottom="70dp"/> .......
编辑 2:
也试过设置OnTouchLisener,还是不行
public class _OnRecylerTouch_Listener : Java.Lang.Object, View.IOnTouchListener
{
private LinearLayout _L;
public _OnRecylerTouch_Listener(LinearLayout L)
{
_L = L;
}
public bool OnTouch(View v, MotionEvent e)
{
_L.Visibility = ViewStates.Gone;
return true;
}
}
最佳答案
顺便说一句,上面是非常有线的代码。据我了解,如果您的解决方案运行良好,但在这种情况下嵌套滚动不适用。
public class _OnRecylerTouch_Listener : Java.Lang.Object, View.IOnTouchListener
{
private LinearLayout _L;
public _OnRecylerTouch_Listener(LinearLayout L)
{
_L = L;
}
public bool OnTouch(View v, MotionEvent e)
{
if (_L.Visibility == ViewStates.VISIBLE) {
_L.Visibility = ViewStates.Gone;
return true;
}
return false;
}
}
然后将您的 onLongClickListener
更改为下一个。
private void OnLongClick(LinearLayout _ReactionLayout)
{
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run()
{
try {
_ReactionLayout.Visibility = ViewStates.Visible;
}
catch (Exception X)
{
Log.Info("1022585", "CLICK (ERROR) : " + X.Message);
}
}, 100);
}
}
你的问题应该已经解决了。
解释
您只需要不拦截触摸事件即可。哪个应该被内卷消耗。 onLongClickListener
的操作应该在 onTouch
之后触发可见性更改才能正常工作。 这不是最佳解决方案,但这是您的问题,因此您可以找出原因。
关于android - 单击 RecyclerView 外部以隐藏 RecyclerView 行中的 ChildView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58686958/
我正在尝试使 collectionView 工作,但我不太确定 CollectionView 是否自动启动 fetch 方法,然后使用获取的数据填充 ChildViews。或者这是我需要手动做的事情?
我正在尝试制作一个具有带 2 个 View 的选项卡栏 View 的应用程序。第一个包含一个 tableView。使用第二个,您可以将元素添加到 tableView 中。现在我希望能够在 View 之
我有一个名为 ToDoItem 的核心数据实体。它有 2 个属性:createdAt(日期)和 title(字符串)。实体的 Codegen 是类定义,如下所示: import Foundation
我正在尝试在我的 View Controller 上实现 SwipeGesture。 我目前面临的问题是我无法确定当前显示的 subview Controller 是什么。 swipeGesture
我有以下(简化的)层次结构:UINavigationController -> UIViewController -> UITableViewController。我想在使用 hidesBarsOnS
我正在尝试构建一个应用程序。 我想要的是 expandable List 。 ArrayList 的每个元素也应该是列表的一个元素。 Parenttitle 应该是对象的标题。该对象还包含 Array
在我的项目中,我在这个 View 中有 loginviewcontroller 我在 viewWillAppear 方法中隐藏了 navigationcontroller如果登录成功,我有以下代码 -
我有一个像这样打开 subview 的父 View : ChildViewController *child = [[ChildViewController alloc] initWithNibNam
我是 Backbone 和 Marionette 的新手,并从书中学到了这一点 Getting Started with Backbone Marionette由 Packpub 出版。 我收到的错误
我有一个 ExpandableListView;列表的单个项目(组项目)有一个包含 ToggleButton 的 FrameLayout。我这样做是为了增加按钮的触摸区域。我使用按钮展开它所属的组项的
我试图从嵌入在 scrollView 中的 stackView 中提取一个 View ,然后将所述 View 重新定位在同一位置,但在 View 层次结构中与 scrollView 处于同一级别的另一
这是一个fiddle for this question (确保您的控制台已打开): 基本上,我有一个 Handlebars block View 作为父级,然后循环遍历项目数组并为每个项目创建子 b
我正在尝试将图像添加到工具栏的图像列表中,它是 CMainFrame 的成员 startStopPicture.LoadBitmapW(IDB_STOP_PIC); m_ToolBar.GetTool
我有 ExpandableList,我将其分配给扩展的 BaseExpandableListAdapter。在这里,我实现了 getChildView 方法来为每个 child 设置和返回一个 Vie
friend , 我正在尝试编写一个在 ChildView 中使用单选复选框的 ExpandableListView。而且我无法理解如何在 ExpandableListView 的 OnChildCl
我有一个简单的 RecyclerView,当您在 RecyclerView 中 LongClick 一行时,我会显示一个隐藏的 LinearLayout在那一行。为此,在我的 public overr
我已经阅读了许多关于此内容和 Apple 文档的其他主题,但尚未找到针对我的特定问题的解决方案。 我的应用使用 UITabBarController作为 rootViewController , 在其
在MarionetteJS中,创建CollectionView时,所有 subview 在渲染时都会自动用换行符分隔。我希望特定 CollectionView 中的子项必须按顺序渲染,而无需添加换行符
我正在尝试通过 Internet 为我的答案找到解决方案,但找不到合适的解决方案。我看了这个话题:Android ExpandableListView Child Headers但它对我不起作用。 我
我需要在另一个 View 之上添加一个新 View (带 ViewController)。用户与这个新 View 交互了一段时间,然后我想将其删除。在旧版本的 Xcode 中,我可以将其添加为 sub
我是一名优秀的程序员,十分优秀!