当前位置: 首页 > 知识库问答 >
问题:

Android OnClick主布局不工作,是因为MotionLayout吗?

邢博学
2023-03-14

我希望能够在名为“rl”的根相对论上执行onClickListner。不,它不起作用,我怀疑这可能是因为我还是个孩子的时候。如何解决这个问题?

这是我迄今为止所做的,我的代码。

ShowNoteActivity.java

(...)

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {

        (...)

        RelativeLayout rl = findViewById(R.id.rl);
        rl.setOnClickListener(view -> {
            Toast.makeText(this, "abc", Toast.LENGTH_SHORT).show();
        });
}

show_note_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/rl"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:focusable="true">

    <pl.jawegiel.simplenotepad.CustomMotionLayout
        android:id="@+id/motion_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:focusable="false"
        app:layoutDescription="@xml/show_note_activity_scene">


        <TextView
            android:id="@+id/note_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:clickable="false"
            android:duplicateParentState="true"
            android:focusable="false"
            android:gravity="center"
            android:text="@string/note_title"
            android:textColor="?attr/myTextColor"
            android:textSize="18sp"
            android:textStyle="bold"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/note_title_value"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/textView3"
            android:clickable="false"
            android:duplicateParentState="true"
            android:focusable="false"
            android:gravity="top|left"
            android:hint="@string/enter_title"
            android:lines="2"
            android:maxLines="10"
            android:minHeight="48dp"
            android:textColor="?attr/myTextColor"
            android:textColorHint="?attr/myHintTextColor"
            android:textSize="18sp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@id/note_title" />


        <TextView
            android:id="@+id/note_desc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/note_title_value"
            android:layout_marginTop="10dp"
            android:clickable="false"
            android:duplicateParentState="true"
            android:focusable="false"
            android:gravity="center"
            android:text="@string/note_desc"
            android:textColor="?attr/myTextColor"
            android:textSize="18sp"
            android:textStyle="bold"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@id/note_title_value" />

        <androidx.core.widget.NestedScrollView
            android:id="@+id/nestedScrollView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clickable="false"
            android:focusable="false"
            app:layout_constraintTop_toBottomOf="@id/note_desc">

            <RelativeLayout
                android:id="@+id/rl2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:clickable="false"
                android:focusable="false">

                <TextView
                    android:id="@+id/note_desc_value"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:clickable="false"
                    android:focusable="false"
                    android:textColor="?attr/myTextColor"
                    android:textColorHint="?attr/myHintTextColor"
                    android:textSize="18sp" />

            </RelativeLayout>
        </androidx.core.widget.NestedScrollView>
    </pl.jawegiel.simplenotepad.CustomMotionLayout>
</RelativeLayout>

自定义运动布局。JAVA

public class CustomMotionLayout extends MotionLayout {

public CustomMotionLayout(Context context) {
    super(context);
}

public CustomMotionLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomMotionLayout(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_MOVE) {
        return super.onInterceptTouchEvent(event);
    }
    return false;
}
}

展示活动场景。xml

<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <ConstraintSet android:id="@+id/start">
        <Constraint
            android:id="@id/note_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>
        <Constraint
            android:id="@id/note_title_value"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@id/note_title"/>
        <Constraint
            android:id="@id/note_desc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@id/note_title_value"/>

    </ConstraintSet>



    <ConstraintSet android:id="@+id/end">
        <Constraint
            android:id="@id/note_title"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:alpha="0.0"/>
        <Constraint
            android:id="@id/note_title_value"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:alpha="0.0"/>
        <Constraint
            android:id="@id/note_desc"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:alpha="0.0"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>
    </ConstraintSet>
    <Transition
        app:constraintSetEnd="@id/end"
        app:constraintSetStart="@id/start"
        app:duration="1000">
        <OnSwipe
            app:touchAnchorSide="top"
            app:dragDirection="dragUp"
            app:moveWhenScrollAtTop="true"
            app:touchAnchorId="@id/nestedScrollView"/>
        <KeyFrameSet>
        </KeyFrameSet>
    </Transition>
</MotionScene>

共有1个答案

李昌勋
2023-03-14

如果你想点击父项,你应该禁用motionlayout转换,用一个按钮或。。。禁用运动布局:

motionLayout.getTransition(R.id.yourTransition).setEnable(false)

如果必须在项目中使用onSwipe,则可以在折叠motionlayout后禁用转换,并以编程方式将布局返回顶部,然后在展开时启用motionlayout转换。

 类似资料:
  • 我有一个简单的UICollectionView,其中包含具有单个UITextView的单元格。UITextView被限制在单元格的边缘,因此它们应该与单元格大小保持相同的大小。 我遇到的问题是,由于某种原因,当我通过collection view:layout:sizeForItemAtIndexPath:指定单元格大小时,这些约束不起作用。 我在Storyboard中将单元格大小设置为320x5

  • 我在我的项目中添加了一个外部主题,并且我编写了一个脚本来在dropdownlist中列出在另一个页面上工作的数据(与外部主题无关),但在布局主题页面中不工作。 主页控制器 注意:市区和社区获取局部视图正在工作。 我没有复制代码,因为它太多了。 ilter.cshtml 该下拉脚本在ParatalFilter脚本工作非常好在另一个布局页面 外部布局 开发工具失败。。。。 我根据这个修复了它: [在此

  • 我正在本地运行一个Flask-Restful API,并从另一个端口发送一个包含JSON的POST请求。我得到了错误 我得到 它将“Access-Control-Allow-Origin”显示为“*”。GET工作正常,只是POST给出了这个错误。会出什么问题?如果相关,对于前端,我使用react并通过Axios请求。

  • 我有这样的布局: 我试图将其用于我的索引页面,如下所示: 但它就是不起作用,引导和css文件没有被索引页使用,页脚和页眉也没有。我使用thymeleaf布局方言2.2.2我缺少什么?

  • 我刚刚回到一个月前运作良好的项目。今天我发现我收到一个“警告:mysqli::query():无法获取mysqli”错误,我不知道为什么。我已尝试更改if语句,但仍然得到相同的结果。 php页面 我得到的错误 您已成功连接到数据库 gptgeoff up666315@myport.ac.uk $2y10$JUi/eSNwbTnM4ZyWetEL6.ELSepLPKLkEiJdi4WYMyp/sEE