首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓TouchImageView高度不变

安卓TouchImageView高度不变
EN

Stack Overflow用户
提问于 2015-02-05 11:17:38
回答 1查看 631关注 0票数 1

我使用TouchImageView (https://github.com/MikeOrtiz/TouchImageView)在全屏上显示位图。当我放普通位图时:

代码语言:javascript
复制
touchImageView.setImageBitmap(bm);

如果用户双击或2指捏-缩放图片缩放,但TouchImageView的宽度/高度保持不变。

当我放置更大的位图时,屏幕的宽度/高度会像预期的那样工作:

代码语言:javascript
复制
Bitmap new_bm = Bitmap.createScaledBitmap(bm, 
            more_px_then_screen_width, more_px_then_screen_height, false);
touchImageView.setImageBitmap(bm);

以下是xml:

代码语言:javascript
复制
    <TouchImageView 
    android:id="@+id/picture_full_screen"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true" />

请帮帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-05 14:19:44

在调查之后,我发现了以下功能:

代码语言:javascript
复制
/**
 * Set view dimensions based on layout params
 * 
 * @param mode 
 * @param size
 * @param drawableWidth
 * @return
 */
private int setViewSize(int mode, int size, int drawableWidth) {
    int viewSize;
    switch (mode) {
    case MeasureSpec.EXACTLY:
        viewSize = size;
        break;

    case MeasureSpec.AT_MOST:
        viewSize = Math.min(drawableWidth, size);
        break;

    case MeasureSpec.UNSPECIFIED:
        viewSize = drawableWidth;
        break;

    default:
        viewSize = size;
        break;
    }
    return viewSize;
}

稍后,它将是onMeasure中的用户来计算

代码语言:javascript
复制
setMeasuredDimension(viewWidth, viewHeight);

setViewSize更改为这一点使我获得了预期的效果:

代码语言:javascript
复制
/**
 * Set view dimensions based on layout params
 * 
 * @param mode 
 * @param size
 * @param drawableSize
 * @return
 */
private int setViewSize(int mode, int size, int drawableSize) {
    int viewSize;
    switch (mode) {
    case MeasureSpec.EXACTLY:
        viewSize = (int) (size*Math.max(normalizedScale, 1.0));
        break;

    case MeasureSpec.AT_MOST:
        viewSize = (int) (size*Math.max(normalizedScale, 1.0));
        break;

    case MeasureSpec.UNSPECIFIED:
        viewSize = drawableSize;
        break;

    default:
        viewSize = (int) (size*Math.max(normalizedScale, 1.0));
        break;
    }
    return viewSize;
}

我将drawableWidth的名称更改为drawableSize,用于编写代码,因为用于计算宽度和高度的函数。

希望有人会觉得这有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28342559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档