如何设置边框的每一个的GridView图像动态项 [英] How to set border to every Gridview Image item dynamically
本文介绍了如何设置边框的每一个的GridView图像动态项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想告诉每一个GridView的项目不同的边框。如何设置边框,动态的每个项目。
<?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
>< ImageView的
机器人:ID =@ + ID / grid_item_image
机器人:layout_width =30像素
机器人:layout_height =30像素
机器人:SRC =@绘制/形状>
< / ImageView的>< / LinearLayout中>
activity_main布局文件:
<的RelativeLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:paddingBottom会=@扪/ activity_vertical_margin
机器人:paddingLeft =@扪/ activity_horizontal_margin
机器人:paddingRight =@扪/ activity_horizontal_margin
机器人:paddingTop =@扪/ activity_vertical_margin
工具:上下文=MainActivity。>< GridView控件
机器人:ID =@ + ID / gridView1
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentLeft =真
机器人:layout_alignParentTop =真
机器人:为numColumns =15
机器人:verticalSpacing =1DP
机器人:horizontalSpacing =1DP
机器人:背景=#f3f3f3
>
< / GridView的>< / RelativeLayout的>
主类:
公共无效的onCreate(捆绑savedInstanceState){ super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main); GridView控件=(GridView控件)findViewById(R.id.gridView1); gridView.setAdapter(新ImageAdapter(本)); gridView.setOnItemClickListener(新OnItemClickListener(){
公共无效onItemClick(适配器视图<>母公司,视图V,
INT位置,长的id){
Toast.makeText(
getApplicationContext(),
/ *((TextView的)v.findViewById(R.id.grid_item_label))的getText()+ * /将String.valueOf(位置),Toast.LENGTH_SHORT).show();
ImageView的ImageView的=(ImageView的)v.findViewById(R.id.grid_item_image);
imageView.setBackgroundColor(Color.BLUE);
}
});
适配器类别:
公共类ImageAdapter延伸BaseAdapter {
私人上下文的背景下;公共ImageAdapter(上下文的背景下){
this.context =背景;
}公共查看getView(INT位置,查看convertView,父母的ViewGroup){ LayoutInflater吹气=(LayoutInflater)上下文
.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 查看GridView控件; 如果(convertView == NULL){
GridView控件=新景(背景);
GridView控件= inflater.inflate(R.layout.mobile,NULL);
}其他{
GridView控件=(查看)convertView;
} 返回GridView控件;
}@覆盖
公众诠释的getCount(){
返回300;
}@覆盖
公共对象的getItem(INT位置){
返回null;
}@覆盖
众长getItemId(INT位置){
返回0;
}
}
修改
我添加了一个形状文件到我的定制设计文件
<?XML版本=1.0编码=UTF-8&GT?;
<形状的xmlns:机器人=http://schemas.android.com/apk/res/android>
[固体机器人:色=@空/>
<行程机器人:宽=1DP机器人:颜色=#000000/>
<填充机器人:左=1DP机器人:顶部=1DP机器人:右=1DP
机器人:底部=1DP/>
< /形状>
解决方案
保存 XML
文件在你的可绘制
与此$ C $文件夹C:
<?XML版本=1.0编码=UTF-8&GT?;
<选择的xmlns:机器人=http://schemas.android.com/apk/res/android> <项目的android:state_enabled =真正的><形状和GT;
[固体机器人:颜色=#FFFFFF/> <行程机器人:宽=1DP机器人:颜色=#CACACA/> <角落的android:半径=5DP/> !< - <填充机器人:底部=5DP机器人:左=5DP机器人:右=5DP机器人:顶部=5DP/> - >
< /形状>< /项目>< /选择>
现在用这个作为一个背景
你的图像视图
并设置图像分离为背景资源
I want to Show different border of every gridview item. how can i set border to every item dynamically .
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView
android:id="@+id/grid_item_image"
android:layout_width="30px"
android:layout_height="30px"
android:src="@drawable/shape" >
</ImageView>
</LinearLayout>
activity_main layout file :
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<GridView
android:id="@+id/gridView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:numColumns="15"
android:verticalSpacing="1dp"
android:horizontalSpacing="1dp"
android:background="#f3f3f3"
>
</GridView>
</RelativeLayout>
Main Class:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView) findViewById(R.id.gridView1);
gridView.setAdapter(new ImageAdapter(this));
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Toast.makeText(
getApplicationContext(),
/*((TextView) v.findViewById(R.id.grid_item_label)).getText() + */String.valueOf(position), Toast.LENGTH_SHORT).show();
ImageView imageView = (ImageView) v.findViewById(R.id.grid_item_image);
imageView.setBackgroundColor(Color.BLUE);
}
});
Adapter Class:
public class ImageAdapter extends BaseAdapter {
private Context context;
public ImageAdapter(Context context) {
this.context = context;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
gridView = inflater.inflate(R.layout.mobile, null);
} else {
gridView = (View) convertView;
}
return gridView;
}
@Override
public int getCount() {
return 300;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
}
EDIT
i have added a shape file to my custom design file
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@null" />
<stroke android:width="1dp" android:color="#000000" />
<padding android:left="1dp" android:top="1dp" android:right="1dp"
android:bottom="1dp" />
</shape>
解决方案
Save a XML
file in your Drawable
folder with this code :
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true"><shape>
<solid android:color="#FFFFFF" />
<stroke android:width="1dp" android:color="#CACACA" />
<corners android:radius="5dp" />
<!-- <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" />-->
</shape></item>
</selector>
Now use this as a background
of your image view
and set your iamges as background resources
这篇关于如何设置边框的每一个的GridView图像动态项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文