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_width
和layout_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();