listview的圆角背景图+listitem整体为圆角如何实现?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了listview的圆角背景图+listitem整体为圆角如何实现?相关的知识,希望对你有一定的参考价值。

[expired]

参考技术A 设置listview的表头和表尾,把表头表尾写个shape设置样式,应该能实现 参考技术B 倒是突然想到了一个方案,整体的FrameLayout上面再盖一个图片作为边框。。。

listitem中的Android listview imageview在滚动时隐藏

在尝试动态设置列表项中的drawable的可见性和图像imageview时,我遇到了这个奇怪的问题。当它最初加载它的显示完全正常,但当我向上或向下滚动时,一些图像不会显示。

这是代码:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    Alarm o = items.get(position);

    if (convertView == null) 
    {
        convertView = View.inflate(mcontxt, R.layout.facelistitem, null);                
        holder = new ViewHolder();
        holder.ind = (ImageView) convertView.findViewById(R.id.imgind);
        holder.name = (TextView) convertView.findViewById(R.id.txtname);
        convertView.setTag(holder);
    }
    else
    {
        holder = (ViewHolder)convertView.getTag();
    }

    if (o != null) {
    String name;
    StringBuilder strb = new StringBuilder().append(
            pad(o.GetAlarmHour())).append(":").append(
            pad(o.GetAlarmMinute()));
    if (position == 0) {
        name = "Add Alarm";
    } else if ((o.getAlarmName() != null)
            && !o.getAlarmName().equals("")) {
        name = o.getAlarmName().trim() + " - " + strb.toString();
    } else {
        name = strb.toString();
    }

        //TextView tt = (TextView) v.findViewById(R.id.txtname);
        //ImageView iv = (ImageView) v.findViewById(R.id.imgind);
        if (holder.name != null) {
            holder.name.setText(name);
        }

        if (holder.ind != null) {
            if (name.equalsIgnoreCase("Add Alarm"))
                holder.ind.setVisibility(View.INVISIBLE);
            if (o.IsAlarmOn())
                holder.ind.setImageDrawable(mcontxt.getResources().getDrawable(
                        R.drawable.alarmon));
            else
                holder.ind.setImageDrawable(mcontxt.getResources().getDrawable(
                        R.drawable.alarmoff));
        }
        /*
         * if(bt != null){ bt.setText("Status: "+ o.getOrderStatus()); }
         */
    }
    return convertView;
}
答案

整个ListView变黑了吗?您可能需要设置:

android:cacheColorHint="@android:color/transparent"

在你的ListView

否则,您可能需要提供INVISIBLE设置的替代方案:

if (name.equalsIgnoreCase("Add Alarm")) {
    holder.ind.setVisibility(View.INVISIBLE);
} else {
    holder.ind.setVisibility(View.VISIBLE);
}

如果你不这样做,那么回收的视图有时会是INVISIBLE,如果你不打算这样做。

另一答案

您需要做的就是在getView中将图像设置为VISIBLE,然后再将其设置为INVISIBLE / GONE(如有必要)。

在我的特定例子中:

    holder.ivImageLeft.setVisibility(View.VISIBLE);
    holder.ivImageRight.setVisibility(View.VISIBLE);

    if (i == 0) {                       
        holder.ivImageLeft.setVisibility(View.GONE);
    } else {                                               
        holder.ivImageRight.setVisibility(View.GONE);
    }

以上是关于listview的圆角背景图+listitem整体为圆角如何实现?的主要内容,如果未能解决你的问题,请参考以下文章

在listView中的图片如何设置圆角

Android ListView圆角

《选中圆角样式之微信小程序》

在后台加载整个 ListView 并在每个 ListItem 中获取一个 UIControl

自定义类似于listView中Item背景

安卓中遮罩图片的处理