Ho un pulsante switch
(in realtà è un pulsante personalizzato) e desidero disattivare la funzionalità di scorrimento per qualche motivo; Voglio che l'utente sia in grado di fare clic solo su di esso. C'è un modo per ottenere questo? Grazie.Pulsante di commutazione - disabilita la funzione di scorrimento
risposta
È possibile impostareClickable (false) sul proprio Switch, quindi ascoltare l'evento onClick() all'interno del genitore dello Switch e attivarlo a livello di programmazione. L'interruttore apparirà comunque abilitato ma l'animazione a scorrimento non avverrà.
...
[In onCreate()]
Switch _Switch_Internet = (Switch) findViewById(R.id.m_switch_internet);
_Switch_Internet.setClickable(false);
...
[clicca ascoltatore]
public void ParentLayoutClicked(View _v){
Switch _Switch_Internet = (Switch) findViewById(R.id.m_switch_internet);
if(_Switch_Internet.isChecked()){
_Switch_Internet.setChecked(false);
}
else{
_Switch_Internet.setChecked(true);
}
}
...
[ layout.xml]
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="ParentLayoutClicked"
android:focusable="false"
android:orientation="horizontal"
>
<Switch
android:layout_marginTop="5dip"
android:layout_marginBottom="5dip"
android:id="@+id/m_switch_internet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="NOT CONNECTED"
android:textOn="CONNECTED"
android:focusable="false"
android:layout_alignParentRight="true"
android:text="@string/s_internet_status" />
</RelativeLayout>
Per disattivare un uso Dell'Interruttore seguente metodo
switchBtn.setEnabled(false);
Per fare interruttore non uso cliccabile
switchBtn.setClickable(false);
dove switchBtn è oggetto Dell'Interruttore
Non funziona. Prima di tutto perché l'evento click non appare dopo che switchBtn.setEnabled (false). In secondo luogo, per la vista disabilitata abbiamo risorse diverse. – Sinigami
Un modo migliore è quello di prevenire la Passare alla classe dalla ricezione degli eventi MotionEvent.ACTION_MOVE
.
Questo può essere fatto con:
switchButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return event.getActionMasked() == MotionEvent.ACTION_MOVE;
}
});
Poi si è liberi di impostare un clic ascoltatore sullo switch a seconda dei casi.
Controlla il implementation of Switch per vedere come funziona il trascinamento. È molto bello!
Non funziona. L'evento di clic non viene visualizzato. Passa ancora a scorrere. – Sinigami
Prova 'setClickable (false)' e implementa 'setOnTouchListener' in aggiunta –
La mia soluzione è:
switchView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
//Your code
}
return true;
}
});
O butterknife:
@OnTouch(R.id.switchView)
public boolean switchStatus(Switch switchView, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
// your code
}
return true;
}
È possibile personalizzato una vista che si estende Passa poi ignorare la sua onTouchEvent()
@Override
public boolean onTouchEvent(MotionEvent ev) {
boolean handle = ev.getActionMasked() == MotionEvent.ACTION_MOVE;
return handle ? handle : super.onTouchEvent(ev);
}
dovrebbe funzionare.
// Questo codice funziona bene
public class MainActivity estende AppCompatActivity implementa CompoundButton.OnCheckedChangeListener { interruttore my_switch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
my_switch = (Switch) findViewById(R.id.my_switch);
my_switch.setOnCheckedChangeListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.my_switch:
if(my_switch.isChecked())
my_switch.setChecked(true);
else
my_switch.setChecked(true);
break;
}
}
}
- 1. Pulsante di commutazione AngularJS
- 2. Pulsante di commutazione multistato
- 3. Pulsante di commutazione come stile pulsante radio
- 4. Pulsante di commutazione nel cassetto di navigazione
- 5. widget gwt - pulsante di commutazione mutuamente esclusivo
- 6. DISABILITA lo scorrimento orizzontale
- 7. Disabilita Scorrimento di UISearchbar aggiunto a UITableView
- 8. Prevenire la pagina dallo scorrimento sulla commutazione dello stato attivo
- 9. Cassetto di navigazione - disabilita lo scorrimento
- 10. Funzione di scorrimento Javascript
- 11. Disabilita lo scorrimento indietro/avanti di due dita di Chrome
- 12. Pulsante disabilita e abilita
- 13. Disabilita scorrimento orizzontale con JavaScript
- 14. QGraphicsView: disabilita lo scorrimento automatico
- 15. JQuery - reset stato di commutazione
- 16. iPad disabilita scorrimento documento ma non div scroll scorrimento
- 17. Disabilita lo scorrimento in listview
- 18. Perché il WPF pulsante di commutazione impulso incontrollato una volta
- 19. Disabilita il pulsante di chiusura del Bootbox
- 20. disabilita pulsante di invio utilizzando jQuery
- 21. Esempio di istruzioni di commutazione
- 22. Come posso creare un pulsante di commutazione in javafx?
- 23. Rimozione del padding dal pulsante di commutazione in Android
- 24. PHP - stato di commutazione
- 25. Disabilita lo scorrimento di un ListView contenuto all'interno di ScrollView
- 26. Raggruppamento pulsanti di commutazione Silverlight
- 27. Pulsante Disabilita mentre Richiesta AJAX
- 28. Disabilita la registrazione per metodo/funzione?
- 29. iOS Disabilita scorrimento pagina con scorrimento overflow: toccare
- 30. Disabilita la funzione $ Strumenti per sviluppatori di Chrome
può aiutare questo: -http: // StackOverflow.it/questions/11753355/switch-between-doubletap-and-swipe –
swipes (sono chiamati EVENTI FLING) - non lo sapevo ... ci proverò in un minuto – Paul