java - Android:更改 ImageView 大小不起作用

标签 java android imageview size

我正在尝试更改我的 ImageView 大小,但我似乎无法同时更改宽度和高度。如果我只更改其中一个,那么一切都可以正常工作,但是当我尝试同时更改两者时,只有宽度发生了变化。

我有 dp 的大小:宽度 22 和高度 38,我将它们转换为 px。还有另一种方法吗?我尝试了很多其他方法,但它们似乎也不起作用。

有人能告诉我,我应该做些什么不同的事情吗?

这是我的代码:

public GridLayout gridLayout;
public GridLayout.Spec row = GridLayout.spec(0);
public GridLayout.Spec col = GridLayout.spec(3);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    gridLayout = (GridLayout) findViewById(R.id.gameGrid);
    createBlock();
}

public void createBlock() {
    ImageView block = new ImageView(this);
    block.setImageResource(R.drawable.red);

    if (gridLayout != null) {
        gridLayout.addView(block, new GridLayout.LayoutParams(row, col));

        int width_in_dp = 22, height_in_dp = 38;
        final float scale = getResources().getDisplayMetrics().density;
        int width_in_px = (int) (width_in_dp * scale + 0.5f);
        int height_in_px = (int) (height_in_dp * scale + 0.5f);

        ViewGroup.LayoutParams layoutParams = block.getLayoutParams();
        layoutParams.width = width_in_px;
        layoutParams.height = height_in_px;
        block.setLayoutParams(layoutParams);

    }
}

最佳答案

您是否尝试过使用blockscaleType?默认是 fitCenter 但我通常选择 centerCropfitXYHere's a good webpage that describes the differences.

您可以通过ImageViewsetScaleType 设置scaleType方法。

关于java - Android:更改 ImageView 大小不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37093506/

相关文章:

Android 嵌套 fragment ——如何只为一个子 fragment 调用 onActivityResult()

android - MySQL SELECT MAX() 查询

image - 通过 FXML 的 JavaFX ImageView 不起作用

安卓 setImageResource NullPointerException

java - 如何获取执行jar的绝对路径?

java - java.io.writer 的 append 和 write 方法有什么区别?

java - 支柱 2 s :include tag not working for header jspf file

java - 如何从 Java 应用程序 (AWT) 中的外部控件获取文本(或自动化)?

android - 如何将 Android 的 .doc 解析为 .html

java - 如何以编程方式向 ImageView 添加圆角边框?