在按下的项目的列表视图中更改项目的不透明度

时间:2014-10-08 09:01:11

标签: android listview

我正在尝试在按下项目时在列表视图中的项目上添加0.5不透明度的黑色视图。

我尝试过使用选择器来更改背景等一些事情,但它不起作用,因为列表中的每个项目都是填充整个项目的图像,而图像是在背景上。

我也试过了:

mWebcamsListView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            Log.i(TAG, "ITEM selected.");
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

            Log.i(TAG, "Nothing selected.");
        }
    });  

要更改视图的不透明度但是当我按下项目时onItemSelected不会被触发,有没有办法获取用户按下的视图来改变它的不透明度?

列表视图:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Webcams"
android:background="@android:color/black">

<ListView
    android:id="@+id/webcamsList"
    android:layout_width="match_parent"
    android:listSelector="@drawable/background_item_webcam"
    android:layout_height="wrap_content" />

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/spinner"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:visibility="visible" />

背景我试图将颜色更改为红色:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
    android:color="@android:color/holo_red_dark"
    />
</shape>

选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"      android:drawable="@drawable/background_index_webcam"/>
</selector>
编辑:我添加了选择器代码,我认为它不起作用,因为图像在背景上我认为我需要在图像上添加图层而不是更改背景,或者以编程方式获取视图并更改它阿尔法。

EDIT2:我找到了解决方案,因为我认为背景颜色正在改变所有我需要做的是设置android:drawSelectorOnTop =“true”在项目视图的顶部绘制选择器

3 个答案:

答案 0 :(得分:1)

我认为您必须实施Listview's setOnItemClickListener听众而不是setOnItemSelectedListener,如下所示:

  mWebcamsListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
             Log.i(TAG, "ITEM selected.");

        }
    });

答案 1 :(得分:1)

此问题有两种方法首先使用png透明用于点击选择器,另一种方法是使用set Alpha with gradient rectangle file

答案 2 :(得分:1)

onItemSelected

中尝试此操作
view.setBackgroundColor(Color.parseColor("#80000000"));