我正在尝试在按下项目时在列表视图中的项目上添加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”在项目视图的顶部绘制选择器
答案 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"));