【发布时间】:2020-12-26 07:33:25
【问题描述】:
我有一个场景,我需要检查一个设置,然后在并排放置的三个按钮中调整文本的颜色。我还更改了显示的图标和按钮的背景颜色。这两件事都完美无缺,但是在我更改颜色后文本本身不再显示。最初我不调用 setTextColor 就可以了。
这是我正在使用的布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
tools:context=".ui.SelectSportActivity">
<LinearLayout
android:id="@+id/select_sport"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="UselessParent">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/logo_with_name"
android:layout_gravity="center_horizontal"
android:layout_marginTop="100dp"
android:contentDescription="@string/my_logo" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/choose_your_sport"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="@color/black"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/imageview_red_gray_border"
android:drawableTop="@drawable/cricket_icn_select"
android:textColor="#FFFFFF"
android:id="@+id/cricketButton"
android:paddingTop="32sp"
android:paddingLeft="52sp"
android:paddingRight="52sp"
android:paddingBottom="32sp"
android:drawablePadding="5sp"
android:text="@string/cricket"/>
<Button
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/imageview_white_gray_border"
android:drawableTop="@drawable/softball_icn"
android:textColor="#000000"
android:id="@+id/softballButton"
android:paddingTop="32sp"
android:paddingLeft="52sp"
android:paddingRight="52sp"
android:paddingBottom="32sp"
android:drawablePadding="5sp"
android:text="@string/softball"/>
<Button
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/imageview_white_gray_border"
android:drawableTop="@drawable/tennis_icn"
android:textColor="#000000"
android:id="@+id/tennisButton"
android:paddingTop="32sp"
android:paddingLeft="52sp"
android:paddingRight="52sp"
android:paddingBottom="32sp"
android:drawablePadding="5sp"
android:text="@string/tennis"/>
</LinearLayout>
</LinearLayout>
代码检查一个值,然后通过调用此函数根据需要进行调整:
private fun toggleButtons(sport: Int) {
when (sport) {
0 -> {
cricketButton.background = ContextCompat.getDrawable(this, R.drawable.imageview_red_gray_border)
cricketButton.drawable(R.drawable.cricket_icn_select)
cricketButton.setTextColor(0xFFFFFF)
softballButton.background = ContextCompat.getDrawable(this, R.drawable.imageview_white_gray_border)
softballButton.drawable(R.drawable.softball_icn)
softballButton.setTextColor(0x000000)
tennisButton.background = ContextCompat.getDrawable(this, R.drawable.imageview_white_gray_border)
tennisButton.drawable(R.drawable.tennis_icn)
tennisButton.setTextColor(0x000000)
}
1 -> {
cricketButton.background = ContextCompat.getDrawable(this, R.drawable.imageview_white_gray_border)
cricketButton.drawable(R.drawable.cricket_icn)
cricketButton.setTextColor(0x000000)
softballButton.background = ContextCompat.getDrawable(this, R.drawable.imageview_red_gray_border)
softballButton.drawable(R.drawable.softball_icn_select)
softballButton.setTextColor(0xFFFFFF)
tennisButton.background = ContextCompat.getDrawable(this, R.drawable.imageview_white_gray_border)
tennisButton.drawable(R.drawable.tennis_icn)
tennisButton.setTextColor(0x000000)
}
2 -> {
cricketButton.background = ContextCompat.getDrawable(this, R.drawable.imageview_white_gray_border)
cricketButton.drawable(R.drawable.cricket_icn)
cricketButton.setTextColor(0x000000)
softballButton.background = ContextCompat.getDrawable(this, R.drawable.imageview_white_gray_border)
softballButton.drawable(R.drawable.softball_icn)
softballButton.setTextColor(0x000000)
tennisButton.background = ContextCompat.getDrawable(this, R.drawable.imageview_red_gray_border)
tennisButton.drawable(R.drawable.tennis_icn_select)
tennisButton.setTextColor(0xFFFFFF)
}
else -> {
Timber.w("Unknown sport selected: $sport")
}
}
}
知道发生了什么吗?
【问题讨论】: