如何以编程方式改变图像的layout_width和layout_height ?


public void repeatSong(View view)
{
if (repeatFlag) //If repeatFlag (Repeat Function) is activated
{
//onClick, icon change to dactivated state
btnRepeat.setBackgroundResource(R.drawable.repeatwhiteicon);
btnRepeat.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
btnRepeat.setMinimumHeight(70);
btnRepeat.setMinimumWidth(70);
}
else //If repeatFlag (Repeat Function) is deactivated
{
//onClick, icon change to activated state
btnRepeat.setBackgroundResource(R.drawable.repeatblueicon);
btnRepeat.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
}
// onClick, repeatSong function is inverted (Activated-Deactivated OR Deactivated-Activated)
repeatFlag = !repeatFlag;
}

btnRepeat是一个ImageButton,它是一个ImageButton当点击时,应该改变为另一个图像。但是我不知道如何更改图像的layout_widthlayout_height。我设法弄清楚如何改变图像的比例类型。btnRepeat.setMinimumHeight(70);btnRepeat.setMinimumWidth(70);在我的情况下不起作用。

那我怎么改呢?提前谢谢你。

当您在LayoutParams中以编程方式指定值时,这些值预计为像素。

要在像素和dp之间进行转换,必须乘以当前密度因子。所以我们可以在DisplayMetrics中使用,你可以从上下文中访问,如下所示:

float factor = btnRepeat.getResources().getDisplayMetrics().density;

你需要将整数值与因子值相乘。

不要设置setMinmumHeoght和setMinimumWidth,你可以试试下面的代码:

btnRepeat.getLayoutParams().height = (int)(70*factor) ;
btnRepeat.getLayoutParams().width = (int)(70*factor) ;
//this line redraws the imageview again call only after you set the size
btnRepeat.requestLayout();

相关内容

  • 没有找到相关文章

最新更新