Android OnClickListener 不会在第一次点击时触发

h_k*_*h_k 2 android onclicklistener

我有一个简单的任务,但无法正常工作。我的 xml 中有一个定义如下的按钮:

<Button
    android:id="@+id/link1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_marginBottom="5dp"
    android:minWidth="256dip"
    android:minHeight="0dp"
    android:text="Button1"
    android:textSize="15sp"
    android:tag="1"
/>
Run Code Online (Sandbox Code Playgroud)

此按钮连接到片段内的以下侦听器:

final Button link1 = (Button)getActivity().findViewById(R.id.link1);
link1.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                System.out.println(link1.getTag().toString());
            }
});
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是这个 onClick 方法没有在第一次点击时触发。它从第二次点击开始工作。这是一个非常简单的带有点击监听器的按钮,所以我不确定为什么第一次点击没有被注册。

编辑:我发现不仅按钮在第一次点击屏幕之前不起作用,而且我的 viewpager 的标签在第一次点击屏幕之前不会滚动或被选中。因此,这意味着从一开始直到首先触摸屏幕,应用程序上目前都无法按下手势或按钮。是什么把一切都锁在了外面?

edit2:我的问题的根源是我设置了以下内容:

getWindow().requestFeature(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
Run Code Online (Sandbox Code Playgroud)

上面代码的目的是删除某些手机上的导航按钮,例如 Nexus 手机。阅读更多:https : //developer.android.com/training/system-ui/navigation.html

包含上述代码后,该应用程序将完全按照预期隐藏手机上的软按钮,但该应用程序将要求我在应用程序的其余部分响应之前执行触摸事件。我将在此基础上提出一个新问题。

小智 6

虽然这是一个老问题,但我也经历过。主要问题是focusableInTouchMode财产。当它设置为 true 时,第一次点击不会触发点击,因为元素元素获得了焦点。