android颜色没有正确显示

时间:2018-05-21 07:20:42

标签: java android kotlin

我在Color.xml中的颜色在应用程序中无法正确显示。例如,蓝色在屏幕上显示为紫色。以下是我的代码。如果我犯了一个错误,请警告我

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
    <color name="temaRenk">#01579B</color>
    <color name="temaGri">#F4F4F4</color>
    <color name="temaKapaliGri">#EDEDED</color>
    <color name="temaLacivert">#000019</color>
    <color name="masaBekliyor">#FFFFFF</color>
    <color name="masaHazirlaniyor">#00B4FF</color>
    <color name="masaHazir">#53C976</color>
    <color name="masaServis">#EFE302</color>
    <color name="masaIptal">#D21044</color>
</resources>

override fun onBindViewHolder(holder: masaListesiViewHolder, position: Int) {
        var olusturulan = MASALAR.get(position)
        holder.setData(position, olusturulan)
    }

    inner class masaListesiViewHolder(itemView : View?) : RecyclerView.ViewHolder(itemView){
        var masa = itemView as CardView
        fun setData(position: Int, olusturulan: MasaBilgileri) {
            masa.MASAADI.setText(olusturulan.MASAADI)
            var adisyonBilgisi = ADISYONLISTESI.filter{ adisyon -> adisyon.MASAADI == olusturulan.MASAADI}
            if(adisyonBilgisi.size != 0){
                var DURUMKONTROL = masaDurumuBelirle(adisyonBilgisi.get(0).DURUM)

                masa.MASATUTARI.setText(adisyonBilgisi.get(0).TUTAR.toString())
                masa.MASADURUMU.setText(DURUMKONTROL.get(0).MASADURUMU)


                masa.MASAADI.setTextColor(DURUMKONTROL.get(0).YAZIRENK)
                masa.MASATUTARI.setTextColor(DURUMKONTROL.get(0).YAZIRENK)
                masa.MASADURUMU.setTextColor(DURUMKONTROL.get(0).YAZIRENK)

                masa.setCardBackgroundColor(DURUMKONTROL.get(0).ARKAPLANRENK)
            }
        }
        fun masaDurumuBelirle(DURUM : Int) : ArrayList<MASADURUMBILGILERI>{
            var durumlar = ArrayList<MASADURUMBILGILERI>()
             when(DURUM){
                0 -> { durumlar.add(MASADURUMBILGILERI("BEKLİYOR", R.color.masaBekliyor, Color.BLACK))}
                1 -> { durumlar.add(MASADURUMBILGILERI("HAZIRLANIYOR",R.color.masaHazirlaniyor, Color.WHITE))}
                2 -> { durumlar.add(MASADURUMBILGILERI("HAZIR",R.color.masaHazir, Color.BLACK))}
                3 -> { durumlar.add(MASADURUMBILGILERI("SERVİS E.",R.color.masaServis, Color.BLACK))}
                4 -> { durumlar.add(MASADURUMBILGILERI("İPTAL",R.color.masaIptal, Color.WHITE))}
            }
            return durumlar
        }
    }
    data class MASADURUMBILGILERI(var MASADURUMU : String, var ARKAPLANRENK : Int, var YAZIRENK : Int){}

我正在从ViewHolder向另一个函数发送一个值,我正在从color.xml导入该值的值。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我不懂非英语代码,但我敢打赌你传递了资源ID,这就是为什么颜色变得不同了。分配颜色时使用ContextCompat.getColor

答案 1 :(得分:0)

看起来你在颜色的resId和颜色的原始值之间混淆了。它们都是int类型。说实话,你的代码编码风格很糟糕,我不知道你在做什么,但是试着看看setTextColorsetCardBackgroundColor方法并找出传递给哪种值他们,resId或颜色值?