Не работает какое-либо решение для изменения потрясающего цвета программно - PullRequest
2 голосов
/ 05 июля 2019

Я должен изменить потрясающий цвет при клике с синего на оранжевый. Я попробовал сам, но это не сработало, поэтому я искал ответ здесь, в стеке, и наткнулся на какое-то решение, которое они предлагали, но у меня не получилось.

Один из вопросов, с которыми я столкнулся, был этот :

, поэтому я попытался использовать:

fab.setBackgroundColor(Color.parseColor("#ffffff"));

fab.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#33691E"));

mFab.setBackgroundTintList(ColorStateList.valueOf(getResources.getColor(R.color.mColor)));

    private void onClickStart(View v) {
        int colorArancione = getResources().getColor(R.color.Arancione);

        if(mStatoScanButton) {
                mProgressBar.setVisibility(View.VISIBLE);
                mScanButton.setColorFilter(colorArancione);
                mScanButton.setImageDrawable(getDrawable(R.drawable.ic_add));
                //mScanButton.setForegroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.Arancione)));
                mStatoScanButton=false;

            startTimedScan();
        }else if(!mStatoScanButton){
            mProgressBar.setVisibility(View.GONE);
            mScanButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.Blue)));
            mStatoScanButton=true;
            if(bluetoothDevicesScansionati.size() == 0)
                mTestoTextView = "Nessun dispositivo trovato";
            fragment_dispositiviScansionati.updateTexto();

            try {
                mTio.stopScan();

            } catch (InvalidObjectException e) {
                e.printStackTrace();
            }
        }
    }


<android.support.design.widget.FloatingActionButton
            android:id="@+id/scanButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onClickStart"
            android:backgroundTint="@color/Blue"
            android:src="@drawable/ic_search_black_24dp"
            android:fontFamily="@font/lustria"
            android:elevation="2dp"
            android:layout_gravity="center"
            app:maxImageSize="35dp"
            app:fabCustomSize="70dp"
            app:borderWidth="0dp"
            />

Ответы [ 2 ]

1 голос
/ 05 июля 2019

В вашем XML-файле вы должны использовать свойство app: backgroundTint = "@ color / Blue" вместо android: backgroundTint = "@ color / Blue" следующим образом:

<android.support.design.widget.FloatingActionButton
            android:id="@+id/scanButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onClickStart"
            app:backgroundTint="@color/Blue"
            android:src="@drawable/ic_search_black_24dp"
            android:fontFamily="@font/lustria"
            android:elevation="2dp"
            android:layout_gravity="center"
            app:maxImageSize="35dp"
            app:fabCustomSize="70dp"
            app:borderWidth="0dp"
            />

И тогда вы можете использовать этот метод:

fab.setBackgroundTintList(ColorStateList.valueOf(#33691E)));

Поскольку этот метод не работает со свойством "android:"

0 голосов
/ 05 июля 2019

Документ предполагает, что он принимает @ color / accent по умолчанию.Но мы можем переопределить его в коде, используя

fab.setBackgroundTintList(ColorStateList)

, но помните,

Минимальная версия API для использования этой библиотеки - 15, поэтому вам нужно обновить ее!если ты не хочешь этого делать

...