Установить стиль, содержащий android: textColor и android: фон программно? (Xamarin. Android) - PullRequest
0 голосов
/ 28 января 2020

У меня есть следующие стили в styles.xml:

<style name="tabSelected">
    <item name="android:textColor">#FFFFFF</item>
    <item name="android:background">#0000ff</item>
</style>

<style name="tabUnselected">
    <item name="android:textColor">#0000ff</item>
    <item name="android:background">#FFFFFF</item>
</style>

И у меня есть два TextViews в моей деятельности. Когда я нажимаю первый TextView, я хочу добавить к нему стиль tabSelected и удалить из него tabUnselected, а когда я нажимаю второй TextView, я хочу добавить к нему стиль tabSelected и удалить tabUnselected из него:

Я попробовал следующее:

exhibitionAreaTextView.Click += delegate
{
    exhibitionAreaTextView.SetTextAppearance(Resource.Style.tabSelected);
    multipurposeRoomTextView.SetTextAppearance(Resource.Style.tabUnselected);
};

multipurposeRoomTextView.Click += delegate
{
    multipurposeRoomTextView.SetTextAppearance(Resource.Style.tabSelected);
    exhibitionAreaTextView.SetTextAppearance(Resource.Style.tabUnselected);
};

Но это изменило только textColor из TextViews. Я видел другое решение:

ContextThemeWrapper newContext = new ContextThemeWrapper(baseContext, R.style.MyStyle);
textView= new TextView(newContext);

Но он создает новый экземпляр TextViews, и я не знаю, сработает ли его событие click после этого, и больше это 2 строки Решение, если это будет 2 строки, я бы лучше сказал:

multipurposeRoomTextView.SetTextColor(#ffffff);
multipurposeRoomTextView.SetBackgroundColor(#0000ff);

Это будет более читабельным. Это способ установить стиль с одним свойством программно, что-то вроде этого multipurposeRoomTextView.SetStyle(MyStyle)?

...