คำถามติดแท็ก ontouchlistener

8
HorizontalScrollView ภายใน ScrollView Touch Handling
ฉันมี ScrollView ที่ล้อมรอบเค้าโครงทั้งหมดของฉันเพื่อให้หน้าจอทั้งหมดเลื่อนได้ องค์ประกอบแรกที่ฉันมีใน ScrollView นี้คือบล็อก HorizontalScrollView ที่มีคุณสมบัติที่สามารถเลื่อนดูได้ในแนวนอน ฉันได้เพิ่มออนทัชลิสเทอร์เนอร์ใน horizontalscrollview เพื่อจัดการกิจกรรมการสัมผัสและบังคับให้มุมมอง "สแน็ป" ไปยังภาพที่ใกล้ที่สุดในเหตุการณ์ ACTION_UP ดังนั้นเอฟเฟกต์ที่ฉันจะทำก็เหมือนกับหน้าจอหลักของ Android ที่คุณสามารถเลื่อนจากหน้าจอหนึ่งไปอีกหน้าจอหนึ่งและมันจะล็อคหน้าจอเดียวเมื่อคุณยกนิ้วขึ้น ทั้งหมดนี้ใช้งานได้ดียกเว้นปัญหาเดียว: ฉันต้องกวาดนิ้วจากซ้ายไปขวาเกือบจะสมบูรณ์ในแนวนอนเพื่อให้ ACTION_UP ลงทะเบียนเลย ถ้าฉันปัดในแนวตั้งอย่างน้อยที่สุด (ซึ่งฉันคิดว่าหลายคนมักจะทำบนโทรศัพท์ของพวกเขาเมื่อปัดไปด้านข้าง) ฉันจะได้รับ ACTION_CANCEL แทนที่จะเป็น ACTION_UP ทฤษฎีของฉันคือว่าสิ่งนี้เป็นเพราะ horizontalscrollview อยู่ภายใน scrollview และ scrollview นั้นถูกไฮแจ็คแตะแนวตั้งเพื่อให้สามารถเลื่อนแนวตั้งได้ ฉันจะปิดการใช้งานกิจกรรมการสัมผัสสำหรับ scrollview จากภายใน scrollview แนวนอนของฉัน แต่ยังคงอนุญาตให้เลื่อนแนวตั้งปกติที่อื่นใน scrollview ได้อย่างไร นี่คือตัวอย่างรหัสของฉัน: public class HomeFeatureLayout extends HorizontalScrollView { private …

4
ปุ่ม Android ได้เรียกใช้ setOnTouchListener แต่ไม่ได้ลบล้าง performClick
เมื่อฉันพยายามเพิ่มลงonTouchListner()ในปุ่มมันทำให้ฉันได้รับไฟล์ ปุ่มได้เรียกใช้ setOnTouchListener แต่ไม่ได้ลบล้าง performClick คำเตือน. มีใครทราบวิธีแก้ไขบ้างครับ? btnleftclick.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { return false; } }); ข้อผิดพลาด: มุมมองแบบกำหนดเองได้เรียกใช้ setOnTouchListener แต่ไม่ได้แทนที่ performClick หากมุมมองที่แทนที่ onTouchEvent หรือใช้ OnTouchListener จะไม่ใช้งาน performClick และเรียกมันเมื่อตรวจพบการคลิกมุมมองอาจไม่จัดการการกระทำการเข้าถึงอย่างถูกต้อง ตรรกะในการจัดการการคลิกควรวางไว้ใน View # performClick เนื่องจากบริการการเข้าถึงบางอย่างเรียกใช้ performClick เมื่อการดำเนินการคลิกเกิดขึ้น

5
คำเตือน onTouchListener: onTouch ควรเรียก View # performClick เมื่อตรวจพบการคลิก
ฉันได้สร้างไฟล์onTouchListener. ขออภัย onTouch () throwsเตือนฉัน: com/calculator/activitys/Calculator$1#onTouch should call View#performClick when a click is detected หมายความว่าอย่างไร? ฉันไม่พบข้อมูลใด ๆ เกี่ยวกับคำเตือนนี้ นี่คือรหัสเต็ม: LinearLayout llCalculatorContent = (LinearLayout) fragmentView.findViewById(R.id.calculator_content); llCalculatorContent.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Tools.hideKeyboard(getActivity(), getView()); getView().clearFocus(); return false; } });

4
ปุ่มเหลืออยู่ในสถานะถูกเน้นด้วย touchListener และ clickListener
ฉันมีปัญหากับปุ่มของฉันอยู่ในสถานะไฮไลต์หลังจากทำสิ่งต่อไปนี้: public class MainActivity extends AppCompatActivity { @SuppressLint("ClickableViewAccessibility") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AppCompatButton button = (AppCompatButton) findViewById(R.id.mybutton); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("Test", "calling onClick"); } }); button.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.