如何ListView在每个项目的基础上更改项目的背景颜色.当我android:backgroundColor在ListView项目布局中使用时,我可以实现此目的,但列表选择器不再可见.我可以通过设置drawSelectorOnTop为true 使选择器再次可见,但选择器覆盖整个项目.
有任何想法如何改变这些背景颜色并保持选择器?
PS我宁愿不改变选择器本身.
编辑:GMail应用程序的作者已经设法实现了这一点,所以它绝对是可能的.
我只有一个活动是ListActivity.基本上我使用以下代码剪切来"激活"CAB:
ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
// Here you can do something when items are selected/de-selected,
// such as update the title in the CAB
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
// Respond to clicks on the actions in the CAB
switch (item.getItemId()) {
case R.id.menu_delete:
deleteSelectedItems();
mode.finish(); // Action picked, so close the CAB
return true; …Run Code Online (Sandbox Code Playgroud) android android-layout android-listview android-linearlayout
我已经对这个问题感到沮丧了很长一段时间,但我似乎无法使导航抽屉中的某个项目既不以编程方式显示也不会在用户选择时显示.
我正在尝试实现以下 http://i.stack.imgur.com/PIHEm.png(我无法发布图片)
我已经按照http://developer.android.com/training/implementing-navigation/nav-drawer.html上的示例导航抽屉进行操作
,每当我切换片段时,我都会调用setItemChecked()导航抽屉的ListView
mDrawerListView.setItemChecked(position, true);,但它似乎没有在列表视图中的位置选择项目.
我的布局文件也几乎与Google的示例完全一样
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ListView
android:id="@+id/left_drawer"
android:layout_width="160dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#e5e5e5" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助,并提前感谢.
编辑:这是我的导航抽屉的初始化代码.如您所见,我没有使用自定义ListView或适配器.
private void setUpDrawer() {
mDrawerListViewItems = getResources().getStringArray(R.array.drawer_list_item_names);
mDrawerListView = (ListView) findViewById(R.id.left_drawer);
mDrawerListView.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_list_item, mDrawerListViewItems));
mDrawerListView.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectCounterFragment(position);
}
});
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(
this, …Run Code Online (Sandbox Code Playgroud) 我必须为ListView项目制作另一个高亮颜色.我使用自定义适配器的项目,我有以下代码:
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:weightSum="1.0"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_weight="0.13"
android:background="@drawable/booklist_header"
android:orientation="horizontal"
android:layout_height="0dp" >
<ImageView
android:id="@+id/imageViewBookListBack"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:src="@drawable/back_button" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_weight="0.77"
android:layout_height="0dp" >
<ListView
android:id="@+id/listViewCurrentList"
android:listSelector="@drawable/selector"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</ListView>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutBooklistAdwhirl"
android:layout_width="fill_parent"
android:layout_weight="0.1"
android:layout_height="0dp" >
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
项目布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imageViewBookListItemImage"
android:layout_width="120dp"
android:layout_marginTop="15dp"
android:layout_height="120dp" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="135dp"
android:layout_marginTop="15dp"
android:orientation="vertical" >
<TextView
android:id="@+id/textViewBookListItemTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Medium Text" …Run Code Online (Sandbox Code Playgroud) 我正在尝试将listview项目制成带有圆角的矩形形状,但是我发生了什么,只有第一行在上部带有圆角,其余的子列表视图项目都是矩形,没有圆角.我不知道为什么会这样.
这是我的listview代码:
<ListView
android:id="@+id/listViewdoctorwithappointment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:layout_marginTop="10dp"
android:minHeight="80dp"
android:background="@drawable/customshapeduplicate"
android:cacheColorHint="@android:color/transparent"
android:divider="#4F94CD"
android:dividerHeight="10dp"
android:smoothScrollbar="true"
android:listSelector="@drawable/selector"
android:scrollbars="none" >
</ListView>
Run Code Online (Sandbox Code Playgroud)
这是我的customshapeduplicatefile是这样的:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#ffffff" android:endColor="#ffffff"
android:angle="270"/>
<corners android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp"
android:topLeftRadius="10dp" android:topRightRadius="10dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
这是图像:

我在自定义列表视图项目中有一个按钮,我正在使用以下可绘制的xml文件:
rounded_corner.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="120dp" android:layout_height="100dp">
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<solid android:color="#002832" />
<padding
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<corners android:radius="5dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
我使用了"#002832"颜色作为drawable.现在,我想以编程方式更改可绘制文件的颜色.我怎样才能做到这一点?
请在没有理解问题的情况下停止标记为重复.
我检查了@Ganesh Pokele SO链接anf,它完全不同.
我查了@bizzard提供的链接但无法解决我的问题.
android android-layout android-xml android-adapter android-drawable
警告:这个问题中的XML是错误的,请在混淆自己之前阅读答案!
我一直在墙上撞了一会儿.以下帖子阐明了这一主题,但未能解决我的问题: Android ListView状态列表未通过自定义选择器显示默认项目背景和ListView项目背景
当我选择列表项时,正确的九补丁背景显示完美,但我无法获得最初显示的默认九补丁背景.在我看来,我需要以某种方式设置默认项目背景,但我无法弄清楚如何这样做.
列表显示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/shopListHeader"
/>
<ListView
android:id="@+id/shopList"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:dividerHeight="0px"
android:divider="#FFFFFFFF"
android:listSelector="@drawable/shop_list_selector"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
选择:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:visible="true">
<!-- the list items are enabled and being pressed -->
<item
android:state_pressed="true"
android:drawable="@drawable/shop_list_item_pressed" />
<item
android:state_selected="true"
android:textColor="#FFFFFFFF" />
</selector>
Run Code Online (Sandbox Code Playgroud)
背景:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:visible="true">
<item
android:state_selected="true"
android:drawable="@android:color/transparent" />
<item
android:drawable="@drawable/shop_list_item" />
</selector>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我已经从参考文献中删除了示例.
您可能还注意到后台选择器未在任何位置引用.我开始在随机的地方扔它(如果应用程序编译添加要么没有效果或导致强制关闭)
当选择一个项目但没有按下时,我也试图阻止文本的颜色变为黑色和灰色(可以通过滚动列表来完成).由于我的背景在中心是黑色,因此选中时文本会变得部分不可见.据我所知,这个添加(选择器中的最后一个项目节点)什么都不做.
有没有人有任何想法让这个荒谬耗时的功能工作?
我创建了简单的gridview应用程序.现在我希望为我的图像创建发光效果,请帮我如何为我的网格视图图像创建发光效果?如果有人知道请给我一些想法和示例代码....
这是我目前的截图:

这是我预期的发光效果截图:

源代码:
main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
GridviewExampleActivity.java
public class GridviewExampleActivity extends Activity
{
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
}
public class ImageAdapter extends BaseAdapter{
private Context mContext;
public ImageAdapter(Context c){
mContext = c;
}
public int getCount()
{
return mThumbIds.length;
}
public Object getItem(int position)
{
return null; …Run Code Online (Sandbox Code Playgroud) 我使用这个SO问题作为指导,但是当我点击一行时它不会保持突出显示.我的代码出了什么问题?
score_list.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/score_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/keyboard"
android:listSelector="@drawable/selector"
android:choiceMode="singleChoice"
android:divider="#CCCCCC"
android:dividerHeight="1dp"
android:paddingLeft="15dp"
android:paddingRight="15dp" />
...
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
绘制/ selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@color/highlight"/>
<item android:state_pressed="true" android:drawable="@color/highlight"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
score_row_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scoreRowLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:background="@drawable/row_selector" >
...
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
绘制/ row_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@color/highlight" />
<item android:state_activated="true" android:drawable="@color/highlight" />
<item android:drawable="@color/transparent" />
</selector>
Run Code Online (Sandbox Code Playgroud)
此代码现在可以正常运行.
我正在为android开发一个小应用程序.我使用带有TextView和CheckBox的ListView.
我已经可以处理CkeckBox了.此外,我想让ListView的整行可点击,但我找不到任何方法来实现这一点.我已经尝试使用以下命令使ListView可单击:
android:clickable="true"
Run Code Online (Sandbox Code Playgroud)
我也尝试使用ListView的代码:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(null,"Clicked",Toast.LENGTH_LONG
}
});
Run Code Online (Sandbox Code Playgroud)
这是我的ListView代码:
<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"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="de.matthias.lolchampionowner.app.ChampionActivity">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/championListView"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
像whatsapp那样做了.使用Android Studio,我可以发现这也是一个ListView,但代码太过模糊,无法从中获取任何东西.
这是一张图片:WhatsApp ListView
我不知道如何实现它.我提供任何帮助.
以下是nKn的答案:
你必须覆盖getView方法.这是我的代码,我可以处理来自ListView和CheckBox的两次点击:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = inflater.inflate(R.layout.row_name_check, null);
holder = new ViewHolder();
holder.textView = (TextView) convertView.findViewById(R.id.textViewRow);
holder.checkBox …Run Code Online (Sandbox Code Playgroud)