【问题标题】:How to overlap RecylerView with Fragment layout and make it clickable如何将 RecyclerView 与 Fragment 布局重叠并使其可点击
【发布时间】:2018-06-04 17:30:22
【问题描述】:

我有一个 Activity,其中包含 RecyclerView 中的单词列表。通过单击“播放”菜单按钮,用户启动播放器,该播放器可以说出列表中的所有单词并像简单的音乐播放器一样操作它们。播放器由fragment.The result I want to achieve.目前我自己的Activity looks like that。在这里,我有 2 个无法解决的问题: 1) Fragment 没有正确重叠 recyclerView。 2) 片段按钮不可点击。当我尝试与玩家互动时,第一个列表的项目不断被点击。

为了实现重叠和可点击性,我尝试使用 android:alpha 和 focusable 属性,但没有带来任何效果。片段的点击监听代码已经写好了。下面我贴出必要的activity的xml和java代码。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include
        android:id="@+id/toolbar_words"
        layout="@layout/layout_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <!--Container for PlayerFragment-->
        <FrameLayout
            android:id="@+id/player_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/words_recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </RelativeLayout>
</LinearLayout>

</RelativeLayout>

Activity中创建PlayerFragment的代码

@Override
public boolean onOptionsItemSelected(final MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_player:
            initPlayer();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

private void initPlayer() {
    PlayerFragment mPlayerFragment = new PlayerFragment();
    FragmentManager mFragmentManager = getSupportFragmentManager();
    FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction();
    mFragmentTransaction.add(R.id.player_container, mPlayerFragment, PLAYER_FRAGMENT);
    mFragmentTransaction.commit();
}

【问题讨论】:

  • 为什么不把它放在一个垂直的LinearLayout中呢?我看不到您需要 RelativeLayout(s) 来做什么
  • 嗨,大卫。是的,你是对的。我不够细心,我可以通过简单的线性布局来达到想要的结果。请形成您的评论作为答案,我可以应用它

标签: android android-fragments android-recyclerview fragmentmanager


【解决方案1】:

试试下面的 Recyclerview 代码。

<android.support.v7.widget.RecyclerView
 android:id="@+id/words_recycler_view"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:layout_below="@id/player_container"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多