安卓:设置ImageView的layout_height编程(Android: Set ImageV

2019-06-26 23:16发布

我在我的main.xml文件的ImageView的:

<ImageView
            android:id="@+id/pageImage"
            android:layout_width="270dp"
            android:layout_height="45dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="25dp"
            android:layout_marginTop="15dp"
            android:scaleType="fitXY"
            android:src="@drawable/pageimage" />

我唯一需要做的是设置在layout_height编程到另一个值。

此外,我需要设置DP值。 因此,它是目前45dp,我想在我的主要活动改变为另一个值。

我试图找出如何使用的LayoutParams做到这一点,但我不能成功。

谢谢。

Answer 1:

我想你想是这样的:

ImageView imgView = (ImageView) findViewById(R.id.pageImage);
imgView.getLayoutParams().height = 200;

所以,首先我们从XML的ImageView的。 然后getLayoutParams()让你正是你可以编辑则PARAMS。 你可以将它们直接出现。 同为宽度等

关于单元(SP,DP ...)我发现这里的东西。 希望这可以帮助:

使用DIP,SP指标编程

在那里,他们提到,所有的单位是像素。 在这个例子中,他将这样20SP的最小宽度

TextView tv0 = new TextView(this);
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, getResources().getDisplayMetrics());
tv0.setMinimumWidth(px);

PS下面是完整的代码,我使用。 希望这是你想要什么:

package com.example.testproject2;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ImageView;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView imgView = (ImageView) findViewById(R.id.pageImage);
        imgView.getLayoutParams().height = 500;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}


Answer 2:

你可以这样做:

LinearLayout.LayoutParams layoutParams  = new LinearLayout.LayoutParams(width_physical_pixels, height_physical_pixels);
imageView.setLayoutParams(layoutParams);

但在参数需要一个像素,所以你将不得不使用公式像素转换为DP,比如你可以用它来转换:

float scale = getBaseContext().getResources().getDisplayMetrics().density;    
px = dp_that_you_want * (scale / 160);

将所有内容放在一起:

//Get screen density to use in the formula.
float scale = getBaseContext().getResources().getDisplayMetrics().density;    
px = dp_that_you_want * (scale / 160);

LinearLayout.LayoutParams layoutParams  = new LinearLayout.LayoutParams(px, px);
imageView.setLayoutParams(layoutParams);

我不知道这是不是你正在寻找什么,或者它是否会工作,所以让我知道如果这样做。



文章来源: Android: Set ImageView layout_height programmatically