Изменить цвет фона кнопки и сохранить старый фон - PullRequest
0 голосов
/ 29 мая 2018

Мне нужно изменить цвет фона моей кнопки на Красный.

Я пытаюсь это button.SetBackgroundColor(Color.Red);, но кнопка становится больше, затем я пытаюсь это button.BackgroundTintList = (ColorStateList.ValueOf(Color.Red)); и работает хорошо.

Но после этого мне нужно поставить фоновую кнопку, как раньше, и я не могу этого сделать.У меня есть другая кнопка с тем же фоном, и я пытаюсь скопировать оттуда, используя Button anotherButton = _v.FindViewById<Button>(Resource.Id.bt_anotherButton); button.Background = anotherButton.Background;

Но вместо того, чтобы поставить другой фон кнопки, равный фону кнопки, происходит противоположное, и обе кнопки стали красными.

Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Как сказал @hichame, ваша кнопка не становится больше.Вы можете прочитать это и это , чтобы понять, почему ваша кнопка выглядит больше.

О цвете кнопки вы можете обратиться к этому использованиюandroid.R.drawable.btn_default:

button.SetBackgroundResource(Android.Resource.Drawable.ButtonDefault);

для сброса вашей кнопки.Но результат не похож на исходную кнопку.


Наконец, я получаю цвет кнопки по умолчанию: #D6D7D7.

Вы можете использовать это значение, чтобы сбросить цвет вашей кнопки напо умолчанию:

button.Background.SetTintList(ColorStateList.ValueOf(Color.ParseColor("#D6D7D7")));

Обновление:

После прочтения этого ответа, я нахожу решение, вам нужно использовать AppCompatButton, установить Xamarin.Android.Support.v7.AppCompat , используйте его в вашем макете:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
  <android.support.v7.widget.AppCompatButton
      android:id="@+id/bt1"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" />
  <android.support.v7.widget.AppCompatButton
      android:id="@+id/bt2"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" />
</LinearLayout>

Используйте SupportBackgroundTintList в вашем MainActivity (также поэтому ваше возвращаемое значение равно нулю):

public class MainActivity : AppCompatActivity,View.IOnClickListener
{
    AppCompatButton bt1;
    ColorStateList backgroundTintList;
    public void OnClick(View v)
    {
        bt1.SupportBackgroundTintList=(backgroundTintList);
        //bt1.SetBackgroundResource(Android.Resource.Drawable.ButtonDefault);
    }

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);

        bt1 = FindViewById<AppCompatButton>(Resource.Id.bt1);
        AppCompatButton bt2 = FindViewById<AppCompatButton>(Resource.Id.bt2);

        backgroundTintList = bt2.SupportBackgroundTintList;

        bt1.SupportBackgroundTintList=ColorStateList.ValueOf(Color.Red);

        bt2.SetOnClickListener(this); 

    }
}

Результат:

enter image description here

0 голосов
/ 29 мая 2018

Ваша кнопка не становится больше, но она получает отступ для кнопки Android по умолчанию.Вы должны установить оттенок, чтобы не изменять размер настроек фона, и вы можете сделать это следующим образом:

var previousTint = button.BackgroundTintList;
button.Background.SetTint (Color.HoloRedDark);

И после этого верните предыдущий оттенок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...