gpt4 book ai didi

android - 如何获取适配器内部的 View 高度以创建大小的位图?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:13 25 4
gpt4 key购买 nike

我将自定义 CursorAdapter 与自定义项一起使用。我需要 View 高度来调整 Assets 文件夹中位图的大小,并将此调整大小的位图设置为列表项中的 ImegeView;

 @Override
public void bindView(View view, final Context context, final Cursor cursor) {
final ViewHolder holder = (ViewHolder) view.getTag();

final int imgCol = cursor.getColumnIndex(TableOdelice.COLUMN_URL);
int titleCol = cursor.getColumnIndex(TableOdelice.COLUMN_TITRE);
final int themeCol = cursor.getColumnIndex(TableOdelice.COLUMN_THEME);

String tempPath = getPath(cursor.getString(themeCol), cursor.getString(imgCol));
final String path = tempPath.replace(".", "c.");
String[] arr = cursor.getString(titleCol).split("\\*");
holder.title.setText(arr[0]);
holder.subTitle.setText(arr[1]);

if (itemHeight > 0) {
showThumb(itemHeight, holder.img, path);
} else {
final ImageView v = holder.mainImage;
v.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
itemHeight = v.getHeight();
showThumb(itemHeight, holder.img, path);
}
});
}
}

private void showThumb(int height, final ImageView iv, final String path) {
if (thumbs.containsKey(path)) {
iv.setImageBitmap(thumbs.get(path));
} else {
InputStream is = null;
try {
is = context.getAssets().open(path);
} catch (IOException e) {
Log.d("no file at path", path);
e.printStackTrace();
}
if (is != null) {
Bitmap btm = btmHelper.scaleToHeight(BitmapFactory.decodeStream(is);, height);
thumbs.put(path, btm);
iv.setImageBitmap(btm);

}
}

}

为了获取 View 高度,我使用 View 的 OnGlobalLayoutListener()。

但是速度很慢...有什么想法吗?

最佳答案

我找到了我的问题的答案。使用这种结构,我可以在每个 View 的适配器内获得正确的 View 宽度或高度。

final ImageView v = holder.mainImage;
v.post(new Runnable() {
@Override
public void run() {
itemHeight = v.getHeight();
Log.d("Height", "" + itemHeight);
}

});
}

也许它会对某人有所帮助 :)

关于android - 如何获取适配器内部的 View 高度以创建大小的位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19157650/

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