无法以编程方式更改工厂颜色的任何解决方案
Posted
技术标签:
【中文标题】无法以编程方式更改工厂颜色的任何解决方案【英文标题】:Not working any solution to change a fab color programmatically 【发布时间】:2019-11-15 19:32:30 【问题描述】:我必须将点击时的工厂颜色从蓝色更改为橙色。我自己尝试过,但它不起作用,所以我在堆栈上搜索了答案,并遇到了他们提出的一些解决方案,但对我不起作用。
我遇到的一个问题是this:
所以我尝试过使用:
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_
android:layout_
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"
/>
【问题讨论】:
为什么这些方法对你不起作用?有什么错误吗? 不,它没有给我任何错误它编译得很好,啊,我也显然添加了dipendencies 你能把你的代码贴在这里以便我们帮助你 好的,我用我的代码编辑了帖子 附加调试器,并检查它是否会出现在您更改颜色的代码行 【参考方案1】:在您的 xml 文件中,您应该像这样使用属性 app:backgroundTint="@color/Blue" 而不是 android:backgroundTint="@color/Blue":
<android.support.design.widget.FloatingActionButton
android:id="@+id/scanButton"
android:layout_
android:layout_
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:”
【讨论】:
非常感谢您。我被困了一整天。像这样的事情让 Android 开发很糟糕:/【参考方案2】:文档建议默认使用@color/accent。但是我们可以使用
在代码上覆盖它fab.setBackgroundTintList(ColorStateList)
但请记住,
使用此库的最低 API 版本为 15,因此您需要更新它!如果你不想这样做
【讨论】:
我正在尝试使用 API 28,所以应该没问题,我正在尝试以上是关于无法以编程方式更改工厂颜色的任何解决方案的主要内容,如果未能解决你的问题,请参考以下文章