我有一个RelativeLayout,其中包含不同的视图(按钮、复选框等)在运行时填充。
这个容器位于名为TwoDScrollView.java的View中。这基本上是一个ScrollView,但允许我在两个方向上滚动,甚至是对角线。
如果它的内容比自身大,那么显然只有在它的内容超出了它本身的大小时才能滚动。
如果我使用setScaleX和setScaleY函数改变RelativeLayout container的比例,它显然会正确地缩放。问题是,我的容器的实际大小根本没有改变。(container.getWidth()和container.getHeight()始终给出相同的值)
这是我的onClick函数:
这个容器位于名为TwoDScrollView.java的View中。这基本上是一个ScrollView,但允许我在两个方向上滚动,甚至是对角线。
如果它的内容比自身大,那么显然只有在它的内容超出了它本身的大小时才能滚动。
如果我使用setScaleX和setScaleY函数改变RelativeLayout container的比例,它显然会正确地缩放。问题是,我的容器的实际大小根本没有改变。(container.getWidth()和container.getHeight()始终给出相同的值)
这是我的onClick函数:
@Override
public void onClick(View v) {
int currentPageId = pager.getCurrentItem();
PageFragment page = (PageFragment)pagePagerAdapater.getItem(currentPageId);
View view = page.getView();
RelativeLayout container = (RelativeLayout) view.findViewById(R.id.container);
float prevScale = pageZoomFactor[currentPageId];
if(v.getId() == R.id.bttZoomIn){
pageZoomFactor[currentPageId] += 0.1f;
}else if(v.getId() == R.id.bttZoomOut){
pageZoomFactor[currentPageId] -= 0.1f;
}else if(v.getId() == R.id.bttZoomReset){
pageZoomFactor[currentPageId] = 1;
}
container.setPivotX(0);
container.setPivotY(0);
container.setScaleX(pageZoomFactor[currentPageId]);
container.setScaleY(pageZoomFactor[currentPageId]);
android.widget.FrameLayout.LayoutParams lp = (android.widget.FrameLayout.LayoutParams) container.getLayoutParams();
lp.width = Math.round((container.getWidth() / prevScale) * pageZoomFactor[currentPageId]);
lp.height = Math.round((container.getHeight() / prevScale) * pageZoomFactor[currentPageId]);
container.setLayoutParams(lp);
System.out.println("Width: "+lp.width);
System.out.println("Height: "+lp.height);
}
正如你所看到的,我已经尝试手动调整大小,但似乎无法得到正确的大小。它要么变得比我想要的更大,要么变得比我想要的更小。