Bouton de commutation – désactiver la fonction de glissement

J'ai un bouton de switch (en fait est un personnalisé) et je veux désactiver la fonctionnalité de glissement pour une raison quelconque; Je souhaite que l'utilisateur puisse cliquer dessus uniquement. Existe-t-il un moyen d'y parvenir? Merci.

  • Afficher le cycle de vie des pagers et des fragments
  • Aide d'Android: comment ouvrir une URL de fichier vidéo distante pour jouer dans MediaPlayer sans avoir à ouvrir une fenêtre de navigateur?
  • Invisible SurfaceView pour aperçu de la caméra
  • Comment animer une vue avec Translate Animation dans Android
  • Est-il possible pour TextView Marquee dans un Widget qui étend AppWidgetProvider?
  • Comment «attendre l'activité» en utilisant Appium, dès le début et pendant le test lui-même?
  • 6 Solutions collect form web for “Bouton de commutation – désactiver la fonction de glissement”

    Vous pouvez configurerClickable (false) sur votre Switch, puis écouter l'événement onClick () dans le parent de Switch et le basculer par programme. Le commutateur semble toujours être activé, mais l'animation de glissement ne se produira pas.

    [In onCreate ()]

     Switch _Switch_Internet = (Switch) findViewById(R.id.m_switch_internet); _Switch_Internet.setClickable(false); 

    [Cliquez sur l'auditeur]

     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> 

    Une meilleure façon est d'empêcher la classe Switch de recevoir les événements MotionEvent.ACTION_MOVE .

    Cela peut se faire avec:

     switchButton.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return event.getActionMasked() == MotionEvent.ACTION_MOVE; } }); 

    Ensuite, vous êtes libre de configurer un écouteur de clic sur le commutateur, le cas échéant.

    Consultez la mise en œuvre de Switch pour voir comment fonctionne le traînage. C'est vraiment cool!

    Pour désactiver une méthode d'utilisation de Switch Use

     switchBtn.setEnabled(false); 

    Pour faire l'utilisation du commutateur pas cliquable

     switchBtn.setClickable(false); 

    Où switchBtn est Switch object

    Vous pouvez personnaliser une vue qui étend le commutateur puis remplacer son onTouchEvent ()

     @Override public boolean onTouchEvent(MotionEvent ev) { boolean handle = ev.getActionMasked() == MotionEvent.ACTION_MOVE; return handle ? handle : super.onTouchEvent(ev); } 

    Cela devrait fonctionner.

    Ma solution est:

     switchView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { //Your code } return true; } }); 

    Ou ButterKnife:

     @OnTouch(R.id.switchView) public boolean switchStatus(Switch switchView, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { // your code } return true; } 

    // Ce code fonctionne bien

    Classe publique MainActivity extends AppCompatActivity implémente CompoundButton.OnCheckedChangeListener {Change 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; } } 

    }

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.