如何分配填充到ListView项分隔线 [英] How to assign padding to Listview item divider line

查看:128
本文介绍了如何分配填充到ListView项分隔线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何我可以给填充到列表项,因为我表现出的形象。

这是我的名单片段code

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:方向=垂直
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT
机器人:layout_marginLeft =25dp
机器人:layout_marginRight =25dp>

 <的ListView
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_width =FILL_PARENT
     机器人:ID =@ + ID / listV_main
    机器人:layout_marginLeft =25dp
机器人:layout_marginRight =25dp/>
 

这是我的列表部分code

 <的LinearLayout
的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直
机器人:以下属性来=10dp
机器人:paddingTop =10dp
机器人:paddingRight =10dp
机器人:paddingBottom会=10dp>
<包括
    机器人:ID =@ + ID / list_item_section_text
    布局=@安卓布局/ preference_category
     />
 

这是我的列表项code

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:=了minHeight机器人:ATTR /列表preferredItemHeight
机器人:adjustViewBounds =真
机器人:paddingRight =机器人:ATTR / scrollbarSize
   >
< ImageView的
    机器人:ID =@ + ID / showlist_item_entry_drawable
    机器人:layout_width =82dp
    机器人:adjustViewBounds =真
    机器人:layout_height =68dp
    机器人:scaleType =fitXY
    机器人:以下属性来=9dp/>
< RelativeLayout的
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_marginLeft =10dip
    机器人:layout_marginRight =6dip
    机器人:layout_marginTop =6dip
    机器人:layout_marginBottom =6dip
    机器人:layout_weight =1
>
    < TextView的机器人:ID =@ + ID / list_item_entry_title
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:单线=真
        机器人:textAppearance =机器人:ATTR / textAppearanceLarge
        机器人:ellipsize =金字招牌
        机器人:fadingEdge =横向/>
    < TextView的机器人:ID =@ + ID / list_item_entry_summary
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_below =@ ID / list_item_entry_title
        机器人:layout_alignLeft =@ ID / list_item_entry_title
        机器人:textAppearance =机器人:ATTR / textAppearanceSmall
        机器人:单线=真
        机器人:文字颜色=机器人:ATTR / textColorSecondary/>
< / RelativeLayout的>
 

这是我进入适配器code

 公共类EntryAdapter扩展ArrayAdapter<项目> {
私人上下文的背景下;
私人的ArrayList<项目>项目;
私人LayoutInflater六;
乌里myurl;
ImageView的形象;
公共EntryAdapter(上下文的背景下,ArrayList的<项目>项目){
    超(背景下,0项);
    this.context =背景;
    this.items =项目;
    VI =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@覆盖
公共查看getView(INT位置,查看convertView,ViewGroup中父){
    视图V = convertView;
    最后一个项目I = items.get(位置);
    如果(我!= NULL){
        如果(i.isSection()){
            SectionItem SI =(SectionItem)我;
            V = vi.inflate(R.layout.list_item_section,NULL);
            v.setOnClickListener(空);
            v.setOnLongClickListener(空);
            v.setLongClickable(假);
            最后的TextView sectionView =(TextView中)v.findViewById(R.id.list_item_section_text);
            sectionView.setText(si.getTitle());
            字符串名称=今天;
            如果(si.getTitle()。equalsIgnoreCase(名))
            {
            sectionView.setPadding(25,0,0,0);
            }
            其他
            {
                sectionView.setPadding(15,0,0,0);
            }
        }其他
          {
            EntryItem EI =(EntryItem)我;
            V = vi.inflate(R.layout.list_item_entry,NULL);
            v.setPadding(10,10,10,10);
            最后的TextView标题=(TextView中)v.findViewById(R.id.list_item_entry_title);
            最后的TextView字幕=(TextView中)v.findViewById(R.id.list_item_entry_summary);
            图像=(ImageView的)v.findViewById(R.id.showlist_item_entry_drawable);
            。image.getLayoutParams()高度= 143;
            。image.getLayoutParams()宽度= 150;
            image.setPadding(7,7,7,7);
            如果(标题!= NULL)
                title.setText(ei.title);
            如果(字幕!= NULL)
                subtitle.setText(ei.subtitle);
            UrlImageViewHelper.setUrlDrawable(图像,ei.img_url);

          }
        }
    返回伏;
    }
 

解决方案

使用插入 ...

(list_divider.xml)

 < XML版本=1.0编码=UTF-8&GT?;
<插图的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:insetLeft =50dp
    机器人:insetRight =50dp>

 <形状>
    [固体机器人:颜色=@色/橙色/>
    <边角机器人:半径=2.0dip/>
< /形状>

< /插图>
 

和您的列表视图中添加这样的...

 <的ListView
    机器人:dividerHeight =2DP
    机器人:分隔=@可绘制/ list_divider
    ...
/>
 

您可以根据需要设置插入值...

更新

正如刚才@Giulio Piancastelli,如果列表容器的背景是从列表项的背景不同,那么你可以使用图层列表

(list_divider.xml)

 < XML版本=1.0编码=UTF-8&GT?;
  <层列表的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android>
   <项目>
        <形机器人:形状=矩形>
            [固体机器人:颜色=@色/ list_background/>
        < /形状>
    < /项目>


    <项目
        机器人:左=10dp
        机器人:右=10dp>
        <形机器人:形状=矩形>
            [固体机器人:颜色=@色/ divider_color/>
        < /形状>
    < /项目>

        < /层列表>
 

和您的列表视图中添加这样的...

 <的ListView
    机器人:dividerHeight =2DP
    机器人:分隔=@可绘制/ list_divider
    ...
/>
 

How can i give padding to list item as i show in image.

this is my list fragment code

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp">

 <ListView 
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
     android:id="@+id/listV_main"
    android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"/>

This is my List section code

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp">
<include
    android:id="@+id/list_item_section_text"
    layout="@android:layout/preference_category"
     />

This is my list item code

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:adjustViewBounds="true"
android:paddingRight="?android:attr/scrollbarSize"
   >
<ImageView
    android:id="@+id/showlist_item_entry_drawable"
    android:layout_width="82dp"
    android:adjustViewBounds="true"
    android:layout_height="68dp"
    android:scaleType="fitXY"
    android:paddingLeft="9dp"/> 
<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="6dip"
    android:layout_marginTop="6dip"
    android:layout_marginBottom="6dip"
    android:layout_weight="1"
>
    <TextView android:id="@+id/list_item_entry_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:ellipsize="marquee"
        android:fadingEdge="horizontal" /> 
    <TextView android:id="@+id/list_item_entry_summary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/list_item_entry_title"
        android:layout_alignLeft="@id/list_item_entry_title"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:singleLine="true"
        android:textColor="?android:attr/textColorSecondary" />
</RelativeLayout>

This is my Entry adaptor code

public class EntryAdapter extends ArrayAdapter<Item> {
private Context context;
private ArrayList<Item> items;
private LayoutInflater vi;
Uri myurl;
ImageView image;
public EntryAdapter(Context context,ArrayList<Item> items) {
    super(context,0, items);
    this.context = context;
    this.items = items;
    vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    final Item i = items.get(position);
    if (i != null) {
        if(i.isSection()){
            SectionItem si = (SectionItem)i;
            v = vi.inflate(R.layout.list_item_section, null);
            v.setOnClickListener(null);
            v.setOnLongClickListener(null);
            v.setLongClickable(false);
            final TextView sectionView = (TextView) v.findViewById(R.id.list_item_section_text);
            sectionView.setText(si.getTitle());
            String name = "Today";
            if(si.getTitle().equalsIgnoreCase(name))
            {
            sectionView.setPadding(25, 0, 0, 0);
            }
            else
            {
                sectionView.setPadding(15, 0, 0, 0);
            }
        }else
          {
            EntryItem ei = (EntryItem)i;
            v = vi.inflate(R.layout.list_item_entry, null);
            v.setPadding(10, 10, 10, 10);
            final TextView title = (TextView)v.findViewById(R.id.list_item_entry_title);
            final TextView subtitle = (TextView)v.findViewById(R.id.list_item_entry_summary);
            image = (ImageView)v.findViewById(R.id.showlist_item_entry_drawable);
            image.getLayoutParams().height = 143;
            image.getLayoutParams().width = 150;
            image.setPadding(7, 7, 7, 7);
            if (title != null) 
                title.setText(ei.title);
            if(subtitle != null)
                subtitle.setText(ei.subtitle);
            UrlImageViewHelper.setUrlDrawable(image,ei.img_url);

          }
        }
    return v;
    }

解决方案

Use 'inset'.....

(list_divider.xml)

<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetLeft="50dp"
    android:insetRight="50dp" >

 <shape>
    <solid android:color="@color/orange" />
    <corners android:radius="2.0dip" />
</shape>

</inset>

and in your list view add like this...

<ListView
    android:dividerHeight="2dp"
    android:divider="@drawable/list_divider"
    ...
/>

you can set the inset value as desired...

UPDATE

As pointed out by @Giulio Piancastelli , If the background of list container is different from background of list item then you may use 'layer-list'...

(list_divider.xml)

  <?xml version="1.0" encoding="utf-8"?>
  <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >  
   <item>
        <shape android:shape="rectangle" >
            <solid android:color="@color/list_background" />
        </shape>
    </item>


    <item
        android:left="10dp"
        android:right="10dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/divider_color"/>
        </shape>
    </item>

        </layer-list>

and in your list view add like this...

<ListView
    android:dividerHeight="2dp"
    android:divider="@drawable/list_divider"
    ...
/>

这篇关于如何分配填充到ListView项分隔线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆