2017-01-23 5 views
1

Я хочу изменить приложение : theme значение атрибута SwitchCompat для чего-то еще (@ style/switchColorStyleBlue). Как я могу сделать это программно? (Приложение: тема в основном меняет цвет тумблер)Android, Change App: значение темы SwitchCompat программно

<android.support.v7.widget.SwitchCompat 
android:id="@+id/switch" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
app:theme="@style/switchColorStylePink"/> 

Я попробовал этот код, но его не показывает соответствующие результаты:

SwitchCompat switchCompat = new SwitchCompat(this); 
    switchCompat.setId(i); 
    switchCompat.setSwitchTextAppearance(getApplicationContext(), R.style.switchColorStylePink); 
    switchCompat.setChecked(false); 
    containerRelativeLayout.addView(switchCompat); 

enter image description here

То, что я хочу, чтобы изменить тему (цвет переключателя) от розового до голубого или любого наоборот.

+0

Вы пробовали вышеуказанный код, запустив его? Потому что из документации на веб-сайте разработчика я серьезно подозреваю, что вы также можете задать тему выше. Смотрите раздел XML Attribute ниже Резюме Справка: https://developer.android.com/reference/android/support/v7/widget/SwitchCompat.html#setSwitchTypeface(android.graphics.Typeface,%20int) Также, пожалуйста, скажите, что именно вы хотите сделать в этом SwitchCompat –

+0

Да, я пробовал вышеупомянутый код в своем вопросе. И я уточнил вопрос для большей ясности. Между тем видя документацию. –

+1

Дайте мне когда-нибудь. Я ищу решение и вернусь к вам ... –

ответ

3

Попробуйте это ... Я проверил, и это работает прекрасно

public class MainActivity extends AppCompatActivity { 

    int[][] states = new int[][] { 
      new int[] {-android.R.attr.state_checked}, 
      new int[] {android.R.attr.state_checked}, 
    }; 

    int[] thumbColors = new int[] { 
      Color.BLACK, 
      Color.RED, 
    }; 

    int[] trackColors = new int[] { 
      Color.GREEN, 
      Color.BLUE, 
    }; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     SwitchCompat switchCompat = (SwitchCompat) findViewById(R.id.switch); 
     DrawableCompat.setTintList(DrawableCompat.wrap(switchCompat.getThumbDrawable()), new ColorStateList(states, thumbColors)); 
     DrawableCompat.setTintList(DrawableCompat.wrap(switchCompat.getTrackDrawable()), new ColorStateList(states, trackColors)); 
    } 
} 

Вам потребуется только обновить «trackColors» и «thumbColor» согласно вашим требованиям/потребностям.

+0

@Ahmad Это должно работать отлично. –

+0

Да, абсолютно. Спасибо вам, ребята! –

 Смежные вопросы

  • Нет связанных вопросов^_^