2017-12-18 19 views
0

ボタンの文字色を変更するために三項演算子を使用しようとしています。 そのようなもの: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 ? &quot;Selected &quot; : &quot;Select &quot;}" 
    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}" 

を試してみました。
どうすればいいですか?

+0

あなたはターコイズ色のヨーヨーで確認しましたあなたは正しい色のコードを設定しましたか? –

+0

はい。色はいいです。 android:textColor = "@ color/turquoise"は必要に応じて動作します – Shmuel

答えて

0

あなたの最初の亜種は正常に動作するはずです。 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); 
    } 
} 
関連する問題