【发布时间】:2016-08-28 07:06:18
【问题描述】:
我在 android 中有水平视图中的图像列表。如果我单击图像视图的特定图像,则必须以编程方式突出显示边框颜色。 如何为图像视图的突出显示边框做到这一点。 提前致谢。
当用户单击 ImageView 的单个图像时,我希望像这样显示 ImageView 的边框。
代码
horizontalimage=(LinearLayout)findViewById(R.id.linearimage);
// final RelativeLayout r1=(RelativeLayout)findViewById(R.id.relative_border);
// frame=(FrameLayout)findViewById(R.id.framelayout
if(multipleimage.length()>0) {
for (int j = 0;j<multipleimage.length();j++)
{
pimages=multipleimage.getJSONObject(j);
JSONObject oneimage=multipleimage.getJSONObject(0);
ii= new ImageView(singleshooppingcart.this);
multipleimages=(ImageView)findViewById(R.id.singleimage);
ii.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
LinearLayout.LayoutParams image = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
image.width=100;
image.height=1
image.setMargins(5,0,0,0);
final String multimgs=pimages.getString("original_res");
String oneimg=oneimage.getString("original_res");
String[] img2 = multimgs.split("\\.");
String imagone=productpath + alertObj.getString("seller_id")+ '/' + img2[0] + '(' + '1' + '0' + '0' + ')' + '.' + img2[1];
String singleiamges=productpath + alertObj.getString("seller_id")+ '/' + oneimg;
// displayimages=productpath + alertObj.getString("seller_id")+ '/' + multimgs[];
YelloPage.imageLoader.displayImage(imagone, ii, options);
YelloPage.imageLoader.displayImage(singleiamges, multipleimages, options);
ii.setLayoutParams(image);
// ii.setBackgroundResource(R.drawable.imgviewpress);
// ii.setBackground(R.drawable.imgviewpress);
/* GradientDrawable gd = new GradientDrawable();
gd.setColor(R.drawable.imageviewhighlight); // Changes this drawbale to use a single color instead of a gradient
gd.setCornerRadius(5);
// gd.setStroke(1, 0xFF000000);
ii.setBackgroundDrawable(gd);*/
horizontalimage.addView(ii);
ii.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Drawable highlight = getResources().getDrawable( R.drawable.imgviewpress);
ii.setBackground(highlight);
int indexOfImage = horizontalimage.indexOfChild(view);
String img1=String.valueOf(indexOfImage);
// Toast.makeText(getApplicationContext(),img1,Toast.LENGTH_LONG).show();
try {
images = multipleimage.getJSONObject(Integer.parseInt(img1)).getString(String.valueOf("original_res"));
} catch (JSONException e) {
e.printStackTrace();
}
// Toast.makeText(getApplicationContext(),images,Toast.LENGTH_LONG).show();
// multipleimages.setImageResource(indexOfImage);
try
YelloPage.imageLoader.displayImage(productpath + alertObj.getString("seller_id")+"/"+images, multipleimages, options);
} catch (JSONException e) {
e.printStackTrace();
}
// String img1=String.valueOf(indexOfImage);
// YelloPage.imageLoader.displayImage(displayimages[indexOfImage], multipleimages, options);
}
});
【问题讨论】:
-
您可以像这样快速解决问题。这可能不是最初的答案,但它可能有效。您在 ImageView 下放置一个 View 并在 View 和 ImageView 之间放置 2 dip 的间隙。然后当你触摸 ImageView 时,只需在动画或其他东西中改变 View 的颜色几秒钟,然后恢复到原来的状态。
-
给它一个 StateList 背景(只是 xml,不需要 Java)。简单。
-
你试过选择器吗?
-
我以编程方式编写了所有内容
-
为什么不用选择器?
标签: android android-layout android-fragments android-studio android-imageview