我已经设置了CardView在我的应用程序中。该卡有 ImageView我已经在 ImageView 上设置了 onClickListener
。但点击两次 ImageView 后会执行操作.
这是 CardView
的代码:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/assign"
android:layout_margin="7dp"
android:padding="15dp"
android:layout_width="70dp"
android:background="@drawable/circle"
android:layout_height="70dp"
android:src="@drawable/assign" />
<TextView
android:text="Assign Table"
android:focusableInTouchMode="true"
android:id="@+id/textAssignTable"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<ImageView
android:layout_marginTop="70dp"
android:layout_gravity="center"
android:id="@+id/clear"
android:src="@drawable/clear"
android:layout_width="25dp"
android:layout_height="25dp" />
</LinearLayout>
这是为ImageView
设置OnCLickListener
的代码。
assign.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String tag = "";
fm = getFragmentManager();
tx = fm.beginTransaction();
AssignTable table=new AssignTable();
tx.replace(R.id.frame, table, tag);
//tx.addToBackStack(tag);
tx.commit();
}
});
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String tag = "";
fm = getFragmentManager();
fm.popBackStack();
tx = fm.beginTransaction();
tx.replace(R.id.frame, chooseTab, tag);
//tx.addToBackStack(tag);
tx.commit();
}
});
这是 SwipeCardOnClick
的 OnClickListener
代码
@Override
public void onItemClick(View view, int i)
{
clear=(ImageView)view.findViewById(R.id.clear);
phone=(TextView)view.findViewById(R.id.phone);
assignTable=(ImageView)view.findViewById(R.id.assignTable);
textAssignTable=(TextView)view.findViewById(R.id.textAssignTable);
textAssignTable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String tag = "";
fm = getFragmentManager();
tx = fm.beginTransaction();
AssignTable table=new AssignTable();
tx.replace(R.id.frame, table, tag);
//tx.addToBackStack(tag);
tx.commit();
}
});
assignTable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String tag = "";
fm = getFragmentManager();
tx = fm.beginTransaction();
AssignTable table=new AssignTable();
tx.replace(R.id.frame, table, tag);
//tx.addToBackStack(tag);
tx.commit();
}
});
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String tag = "";
fm = getFragmentManager();
fm.popBackStack();
tx = fm.beginTransaction();
tx.replace(R.id.frame, chooseTab, tag);
//tx.addToBackStack(tag);
tx.commit();
}
});
最佳答案
我建议您删除 android:focusableInTouchMode="true" 或使其为假。
这似乎消耗了第一次点击,因此没有将其传递给点击监听器。 第二次单击就会成功,因为现在已获得焦点。 另一个选项是将 RequestFocus 设置为 true,然后设置焦点,这样第一次点击就不会被消耗。 我遇到了类似的问题,试图使用 android:focusableInTouchMode="true"保留按钮选择的历史记录。 RequestFocus() 然后消除了第一次点击消耗问题。
我希望这是有道理的。
关于android - ImageView onClick 需要点击两次才能执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48886979/