プログラムでビューの位置とサイズを更新したいのですが、これを行うことができません.これら2つのうちの1つで作業すると、正常に動作します. 最初にサイズを更新します
oldLayout = (android.widget.RelativeLayout.LayoutParams) view.getLayoutParams();
changeInWidth = oldLayout.width*ratioWidth;
changeInHeight = oldLayout.height*ratioHeight;
newLayout = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
if (standardWidth>screenWidth)
newLayout.width = (int) (oldLayout.width-changeInWidth);
else if (standardWidth<screenWidth)
newLayout.width = (int) (oldLayout.width+changeInWidth);
else
newLayout.width=oldLayout.width;
if (standardHeight>screenHeight)
newLayout.height = (int) (oldLayout.height-changeInHeight);
else if (standardHeight<screenHeight)
newLayout.height = (int) (oldLayout.height+changeInHeight);
else
newLayout.height=oldLayout.height;
//newLayout.addRule(RelativeLayout.ALIGN_PARENT_TOP);
//newLayout.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
このコードは、位置を更新するために開始します
if (standardWidth>screenWidth)
newLayout.leftMargin = (int) (oldLayout.leftMargin-changeInWidth);
else if (standardWidth<screenWidth)
newLayout.leftMargin = (int) (oldLayout.leftMargin+changeInWidth);
else
newLayout.leftMargin=oldLayout.leftMargin;
if (standardHeight>screenHeight)
newLayout.topMargin = (int) (oldLayout.topMargin-changeInHeight);
else if (standardHeight<screenHeight)
newLayout.topMargin = (int) (oldLayout.topMargin+changeInHeight);
else
newLayout.topMargin=oldLayout.topMargin;
view.setLayoutParams(newLayout);