如何使用列表视图中的项目更改活动的背景颜色?

时间:2017-11-23 15:12:42

标签: java android listview

我试图在android studio中使用listview更改活动的背景颜色,但是当我点击listview中的项目时没有任何反应。有人能帮助我吗?

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setListAdapter(new ArrayAdapter<String>(this, R.layout.row,R.id.label,items));

    view = this.getWindow().getDecorView();
    view.setBackgroundResource(R.color.white);
}


public void onListItemClick(ListView parent, View v, char position, long id) {
    String s = label.getText().toString();
    double l = Double.parseDouble(s);
    double o;
    switch (position) {
        case 0:
            view.setBackgroundResource(R.color.red);
            break;
        case 1:
            view.setBackgroundResource(R.color.green);
            break;
        case 2:
            view.setBackgroundResource(R.color.white);
            break;
        case 3:
            view.setBackgroundResource(R.color.orange);
            break;

    }
}

activity_main.xml中

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

5 个答案:

答案 0 :(得分:1)

更新您的activity_main.xml,如下所示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/background_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background_screen"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:orientation="vertical">

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

</LinearLayout>

在您的活动中投射布局并将背景颜色应用于布局。这将更改屏幕的背景颜色

private LinearLayout mLayout=null;

     @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setListAdapter(new ArrayAdapter<String>(this, R.layout.row,R.id.label,items));
        mLayout = (LinearLayout) findViewById(R.id.background_layout);
        view = this.getWindow().getDecorView();
        view.setBackgroundResource(R.color.white);
    }


    public void onListItemClick(ListView parent, View v, char position, long id) {
        String s = label.getText().toString();
        double l = Double.parseDouble(s);
        double o;
        switch (position) {
            case 0:
                mLayout .setBackgroundColor(Color.RED);
                break;
            case 1:
                 mLayout .setBackgroundColor(Color.GREEN);
                break;
            case 2:
                  mLayout.setBackgroundColor(Color.GREEN);
                break;
            case 3:
                 mLayout.setBackgroundColor(Color.parseColor("#FFA500"));
                break;
        }
    }

答案 1 :(得分:0)

自:

view.setBackgroundResource(R.color.red);

要:

view.setBackgroundColor(Color.RED);

答案 2 :(得分:0)

建议的方法是在项目文件中转到app/res/values并打开colors.xml 在那里添加如下颜色:<color name="darkGreen">#669900</color>

然后在你的mainActivity.java中写入 Case0: view.setBackgroundColor(getResources().getColor(R.color.darkGreen)); break;

如果你需要找到你想要的颜色的十六进制数,你可以使用像这样的网站颜色选择器: https://www.w3schools.com/colors/colors_picker.asp

答案 3 :(得分:0)

在XML中,为父布局提供android:ID属性并将其连接到java类中。 然后onClick更改布局的颜色,它应该更改父布局的背景颜色。

答案 4 :(得分:0)

这应该有效

首先在activity_main布局中为您的布局添加id 喜欢

 <LinearLayout
       android:id="@+id/LinearLayout1"
   ........

然后在你的活动中

 final LinearLayout layout = (LinearLayout) findViewById(R.id.LinearLayout1);

   public void onListItemClick(ListView parent, View v, char position, long id) {        
         if(iscolor)
         {
             layout.setBackgroundColor(Color.BLUE);
             iscolor = false;
         }
         else
         {
             layout.setBackgroundColor(Color.WHITE);
             iscolor = true;
         }

        }

选择您正在使用的任何布局类型