LinearLayout.setBackgroundColor(int)在Android中不起作用

Posted

技术标签:

【中文标题】LinearLayout.setBackgroundColor(int)在Android中不起作用【英文标题】:LinearLayout.setBackgroundColor(int) not working in Android 【发布时间】:2017-01-21 07:18:49 【问题描述】:

我正在尝试使用 android Pallete 在代码中为我的线性布局设置自定义颜色。

代码如下:

public void changeColour(Pallete palette)
   v = li.inflate(R.layout.contact_info, null);
   contactInfo = (LinearLayout)v.findViewById(R.id.contact_layout);
   contactInfo.setBackgroundColor(palette.getDarkMutedSwatch().getBodyTextColor());

我也尝试过先制作ColorDrawable,然后用它来设置这样的背景。

ColorDrawable cd = new ColorDrawable(palette.getDarkMutedSwatch().getBodyTextColor());
contactInfo.setBackground(cd);

但即使这样也行不通。 contactInfoListView 的一个元素。

列表项的 XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical"
    >

    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="horizontal"
        android:layout_margin="5dp"
        android:id="@+id/contact_layout"
        android:weightSum="3">

        <ImageView
            android:layout_
            android:layout_
            android:id="@+id/pic"
            android:src="@drawable/image" />

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical"
            android:layout_weight="2.6"
            android:layout_margin="5dp"
            android:paddingLeft="10dp"
            android:layout_gravity="center">

            <TextView
                android:layout_
                android:layout_
                android:id="@+id/name"
                android:text="User name"
                android:textSize="24dp"
                android:textColor="#ffffff"/>


        </LinearLayout>

        <LinearLayout
            android:layout_weight="0"
            android:layout_
            android:layout_
            android:layout_gravity="right|center"
            android:gravity="center"
            android:visibility="gone"
            android:orientation="horizontal">

            <CheckBox
                android:layout_
                android:layout_
                android:id="@+id/check" />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

【问题讨论】:

什么是 Pallete?你的意思是android.support.v7.graphics.Palette? 是的 android.support.v7.graphics.Palette; 你试过用 setBackgroundColor 代替 setBackground 吗? 是的,我基本上在给定的函数中使用了 backgroundcolor 。但即使这样也行不通。 palette.getDarkMutedSwatch().getBodyTextColor()的价值是什么? 【参考方案1】:

我发现了问题。我改变了数组适配器中的布局颜色,它也改变了。下面给出解决方案。

 public View getView(int i, View convertView, ViewGroup viewGroup) 
       View view = convertView;
       view.findViewById(R.id.contact_layout).setBackgroundColor(Color.BLUE)

因此,通过将颜色通过对象数组传递给数组适配器,我能够解决我的问题。

【讨论】:

以上是关于LinearLayout.setBackgroundColor(int)在Android中不起作用的主要内容,如果未能解决你的问题,请参考以下文章