type textpersonname studio plain outlined numberdecimal number inputtype fields edittext android input

textpersonname - Android SeekBarChangeListener y TouchListener Sin eventos



outlined text fields android (5)

Tengo un problema con los eventos de clic de botón y los eventos de la barra de búsqueda no se activan. Cuando arrastro en mi barra de búsqueda, el control deslizante cambia de posición visualmente, pero no hay ningún evento que se OnSeekBarChangedListener en mi OnSeekBarChangedListener . También tengo un ImageButton que debería recibir eventos de clic, pero tampoco se dispara. El MyView en la parte inferior aquí maneja los eventos táctiles correctamente. GLSurfaceView un GLSurfaceView que puedo desplazarme y pisar con zoom. ¿Qué podría estar causando que los eventos no se disparen?

Aquí está mi diseño:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/tec_root"> <ImageButton android:id="@+id/button_star" android:contentDescription="@string/star_description" android:layout_width="32dp" android:layout_height="32dp" android:layout_marginTop="16dp" android:layout_marginRight="16dp" android:layout_marginEnd="16dp" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:src="@drawable/star_empty" android:background="#00000000" android:scaleType="fitXY"/> <LinearLayout android:id="@+id/view_plot" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_below="@id/button_star"/> <SeekBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@id/button_star" android:layout_toStartOf="@id/button_star" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:progress="50" android:layout_alignBaseline="@id/button_star" android:id="@+id/seekbar" /> </RelativeLayout>

Y aquí están los oyentes:

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_activity); prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); starred = prefs.getBoolean("starred", false); final ImageButton starButton = (ImageButton) findViewById(R.id.button_star); starButton.setImageDrawable(ContextCompat.getDrawable(this, (starred ? R.drawable.star_filled : R.drawable.star_empty))); starButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { starred = !starred; prefsEditor = prefs.edit(); prefsEditor.putBoolean("starred", starred); prefsEditor.apply(); starButton.setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), (starred ? R.drawable.star_filled : R.drawable.star_empty))); } }); ((SeekBar) findViewById(R.id.seekbar)).setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { Log.e("TEST", "Seekbar onProgressChanged called"); Toast.makeText(getApplicationContext(), "Seekbar fired", Toast.LENGTH_SHORT).show(); // respond to update } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); MyView myView = new MyView(this, points, false); ((LinearLayout) findViewById(R.id.view_plot)).addView(myView); }



Intenta cambiar tu código a esto:

MyView myView = new MyView(this, points, false); myView.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); ((LinearLayout) findViewById(R.id.view_plot)).addView(myView);


Una posible razón para esto podría ser el manejo táctil en MyView personalizado. Tenemos que tener mucho cuidado con el valor de retorno de la función onTouchEvent (). Intente devolver "true" desde su onTouchEvent () si está consumiendo el evento; de lo contrario, devuelva "false".


intente esto, reemplace LinearLayout con FrameLayout, no es el mejor desempeño pero funciona bien

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tec_root" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <SeekBar android:id="@+id/seekbar" android:layout_width="0dip" android:layout_height="wrap_content" android:background="#ABABAB" android:layout_weight="1" android:progress="50" /> <ImageButton android:id="@+id/button_star" android:layout_width="32dp" android:layout_height="32dp" android:background="#00000000" android:contentDescription="@string/star_description" android:scaleType="fitXY" android:src="@drawable/star_empty" /> </LinearLayout> <FrameLayout android:id="@+id/view_plot" android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" /> </LinearLayout>


puede haber problemas con el diseño del diseño, así que reorganice los componentes de la interfaz de usuario. seekbar está sobre imagebutton, por lo que la plataforma Android no puede detectar eventos táctiles.

establecer layout_below en seekbar