数据绑定设置颜色
我尝试使用三元运算符来更改按钮的文本颜色。 类似的东西:这里是xml。数据绑定设置颜色
<Button android:id="@+id/actionButton"
android:layout_width="113dp"
android:layout_height="30dp"
android:background="@drawable/button"
android:backgroundTint="@{selected ? R.color.white : R.color.turquoise}"
android:text="@{selected ? "Selected " : "Select "}"
android:textColor="@{selected ? @color/white : @color/turquoise}"
android:onClick="@{(view) -> handler.selectClick(view)}"/>
但颜色设置不正确。我得到一些奇怪的紫色颜色。
我试图
<import type="com.myapp.R" /> android:textColor="@{selected ? R.color.white : R.color.turquoise}"
具有相同的结果。
我应该怎么做?
回答:
您的第一个变体应该可以正常工作。您可以参考this doc的“资源”一章。 这是一个完整的工作示例。
colors.xml
<?xml version="1.0" encoding="utf-8"?> <resources>
...
<color name="foo">#fff</color>
<color name="bar">#000</color>
</resources>
main_activity.xml
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="selected" type="boolean" />
<variable name="button2" type="String" />
</data>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_a"
android:onClick="switchColor"
android:text="Click me"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_b"
android:textColor="@{selected ? @color/foo : @color/bar}"
android:text="@{button2}"/>
</LinearLayout>
</layout>
ActivityMain.class
public class ActivityMain extends AppCompatActivity { public static final String TAG = "MainActivity";
MainActivityBinding mBinding;
boolean mSelected;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.main_activity);
mBinding.setButton2("Don't click me please!");
}
public void switchColor(View view) {
mBinding.setSelected(mSelected = !mSelected);
}
}
以上是 数据绑定设置颜色 的全部内容, 来源链接: utcz.com/qa/261534.html