我在ViewPager的Fragment中有一个RecyclerView。 RecyclerView中的每个项目都是LinearLayout。我的问题是,当我触摸RecyclerView时,我无法刷页。我已经尝试使用RelativeLayout并且它有效,所以问题在于LinearLayout。
我的片段布局:
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
/>
行布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"
android:weightSum="1">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.05"
android:textAlignment="center"
android:id="@+id/game_all_text_number"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.225"
android:textAlignment="center"
android:id="@+id/game_all_text_player1"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.225"
android:textAlignment="center"
android:id="@+id/game_all_text_player2"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.225"
android:textAlignment="center"
android:id="@+id/game_all_text_player3"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.225"
android:textAlignment="center"
android:id="@+id/game_all_text_player4"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.05"
android:textAlignment="center"
android:id="@+id/game_all_text_diff"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
/>
</LinearLayout>
如果我将行的父级更改为RelativeLayout,我可以滑动并且它可以正常工作,但如果它是LinearLayout则不会。
我根本不需要点击RecyclerView,是否有办法可以禁用在RecyclerView上完成的任何滑动或任何触摸事件,而是将其发送到片段?
答案 0 :(得分:1)
尝试设置
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
在RecyclerView或项目LinearLayout 上
答案 1 :(得分:0)
有相同的问题,其原因是android:singleLine="true"
,删除该问题可以解决问题,但代价是丢失自动滚动文本。但是,我发现了一种解决方法,即将onTouchListener添加到每个使用singleLine的视图中:
view.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN)
{
view.setSingleLine(false);
view.setMaxLines(1);
}
else if (event.getAction() == android.view.MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL)
{
view.setSingleLine(true);
}
return true;
}
});
这将在禁用单行功能的同时按下以使其能够滑动,并在释放后重新启用单行功能。