¿Cómo manejar eventos de toque en un fragmento?
Estoy construyendo una interfaz donde necesito procesar eventos táctiles . En particular, sería capaz de permitirles sólo a un área confinada en un fragmento. Para entender mejor el problema, respetar los estándares y el objetivo de mi aplicación, planeé el cajón de navegación, que asume la presencia de muchos fragmentos (en lugar de actividades). Una actividad con eventos táctiles se implementa muy fácilmente, por otro lado he leído en Internet que con los fragmentos puede convertirse en un problema .
Mi aplicación, a nivel arquitectónico, es la siguiente: – MainActivity.java – NavigationDrawer.java – TestFragment.java (para un solo fragmento ahora, a la espera de resolver el problema)
- Pase Android NestedScrollView desplazamientos horizontales a un padre Ver
- Audífono de cursor de ratón Android como OnTouchListener
- EditText en ListView pierde foco cuando se presiona en Android 4.x
- Android WindowManager TYPE_SYSTEM_ALERT Diseño en el tacto
- Android: ¿Qué uso tiene AnchorView de MediaController?
No he encontrado una solución o un tutorial que explique cómo hacerlo bien (o cómo solucionar el problema). Entonces le pregunto, simplificando el problema para " habilitar un evento táctil en un fragmento (getPressure () en este caso) ". A continuación se presentan algunas piezas de código que pueden ayudar a resolver el problema:
TestFragment
public class TestFragment extends Fragment { private static final String ARG_SECTION_NUMBER = "section_number"; public static TestFragment newInstance(int sectionNumber) { TestFragment fragment = new TestFragment(); Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); fragment.setArguments(args); return fragment; } public TestFragment() {} @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_test, container, false); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public boolean onTouchEvent(MotionEvent event) { // Here I want to return the press value (0 to 1) } }
¿Cómo asociar al oyente a todo el fragmento? Y en el caso de un área en particular? Finalmente, ¿cómo puedo devolver el valor de la presión en la pantalla?
Muchas gracias en el consejo! 🙂
- OnTouchevent () vs onTouch ()
- android arrastrar y soltar ImageView onTouchListener
- Método único para implementar onTouchListener () para varios botones
- Problema en OnTouchListener para ImageView
- Ocultar teclado en android mientras se toca fuera Editar área de texto
- Ver sólo el registro de MotionEvent.ACTION_DOWN
- Android: OnTouch, MotionEvent.ACTION_MOVE no está reconocido?
- OnTouchListener de una vista vs onTouchEvent
No estoy seguro si he entendido su problema, pero intentaré contestar esto. Así que para obtener eventos de contacto en el fragmento que haría esto:
-en su fragmento onCreateView:
View view = inflater.inflate(R.layout.fragment_test, container, false); view.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_MOVE){ //do something } return true; } }); //here the rest of your code return view;
Y puede comprobar para diferentes MotionEvents en onTouch, por ejemplo:
MotionEvent.ACTION_DOWN, MotionEvent.ACTION_UP,...