如何分配填充到ListView项分隔线 [英] How to assign padding to Listview item divider line
问题描述
如何我可以给填充到列表项,因为我表现出的形象。
这是我的名单片段code
< LinearLayout中的xmlns:机器人=http://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:机器人=http://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:机器人=http://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:机器人=http://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:机器人=http://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屋!