gpt4 book ai didi

android - 在水平 ScrollView 中的 ImageView 列表之间添加边框/分隔符

转载 作者:行者123 更新时间:2023-11-30 00:16:48 24 4
gpt4 key购买 nike

我正在尝试在水平 ScrollView 内的一系列 ImageView 周围添加分隔符/边框。

我的应用程序将显示特定文件夹中的所有图像,并将它们分别加载到放置在水平 ScrollView 中的 ImageView 中。

但是,大多数图像具有相同的背景颜色,因此很难将它们彼此分开。我想在 imageview 上添加某种边框,或者在它们之间添加一个简单的分隔符。

知道我该怎么做吗? enter image description here

我的水平布局代码在这里:

import java.util.ArrayList;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

public class MyHorizontalLayout extends LinearLayout {

Context myContext;
ArrayList<String> itemList = new ArrayList<String>();

public MyHorizontalLayout(Context context) {
super(context);
myContext = context;
}

public MyHorizontalLayout(Context context, AttributeSet attrs) {
super(context, attrs);
myContext = context;
}

public MyHorizontalLayout(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
myContext = context;
}

void add(String path){
int newIdx = itemList.size();
itemList.add(path);
addView(getImageView(newIdx));
}

ImageView getImageView(final int i){
Bitmap bm = null;
if (i < itemList.size()){
bm = decodeSampledBitmapFromUri(itemList.get(i), 220, 220);
}

ImageView imageView = new ImageView(myContext);
imageView.setLayoutParams(new LayoutParams(500, 500));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setImageBitmap(bm);

imageView.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
String path = itemList.get(i);
DeviceControlActivity.m_Text = path.substring(path.lastIndexOf("/")+1);
Toast.makeText(myContext,
"Selected - " + DeviceControlActivity.m_Text,
Toast.LENGTH_SHORT).show();

}});

return imageView;
}

public Bitmap decodeSampledBitmapFromUri(String path, int reqWidth, int reqHeight) {
Bitmap bm = null;

// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);

// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
bm = BitmapFactory.decodeFile(path, options);

return bm;
}

public int calculateInSampleSize(

BitmapFactory.Options options, int reqWidth, int reqHeight) {
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;

if (height > reqHeight || width > reqWidth) {
if (width > height) {
inSampleSize = Math.round((float)height / (float)reqHeight);
} else {
inSampleSize = Math.round((float)width / (float)reqWidth);
}
}

return inSampleSize;
}

}

最佳答案

尝试将 1dp 的填充留给 imageView 的左侧。如果您希望边距具有某种颜色,请为该 imageView 设置背景色。

关于android - 在水平 ScrollView 中的 ImageView 列表之间添加边框/分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47114081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com