如何创建比屏幕大的视图?

Jan*_*usz 30 layout android

是否可以创建比屏幕更大的视图?

我需要一个宽度大于设备屏幕的视图.我在旋转动画中使用此视图.在旋转期间,在动画视图之前不在屏幕上的部件将变得可见.

有没有办法用android框架实现这个效果?

更新

我试图设置我的父布局比屏幕大得多,它正在工作.这会使某些事情有点不舒服,但它可以工作.现在的下一个问题是我的布局仍然从屏幕的左侧开始.我想不出一种方法可以让布局扩展到屏幕的左侧和右侧.

Jan*_*usz 16

好的,我得到了答案.它不是很好,因为它使用了一个已弃用的View类,但它至少可以在我当前的测试屏幕分辨率上工作,明天会测试其他分辨率.

我用这样的绝对布局包装了我想要扩展到屏幕之外的视图:

<AbsoluteLayout
  android:layout_width="wrap_content"
  android:layout_height="fill_parent"
  android:layout_alignParentBottom="true">

  <ImageView
     android:id="@+id/content"
     android:layout_width="600dip"
     android:layout_height="420dip"
     android:scaleType="centerCrop"
     android:layout_x="-200dip"
     android:layout_y="60dip"
     android:src="@color/testcolor" />

</AbsoluteLayout>
Run Code Online (Sandbox Code Playgroud)

-200x坐标使视图棒200dip离开屏幕的左侧.如果我正在为视图设置动画,那么屏幕外部的部分将逐渐变为可见.

  • 似乎在FrameLayout中包装ImageView可以使负边距成为可能.我不明白为什么Android只是在屏幕外/部分屏幕外放置视图这么痛苦. (6认同)
  • absoluteLayout现已弃用 (3认同)

riw*_*nyk 9

例如设置负底边距和设置超大layout_height(足够大)可以解决类似的问题.

至少使用API​​ 11+动画/旋转可以正常工作.

看起来像:

android:layout_marginBottom =" - 1000dp"android:layout_height ="1000dp"


fre*_*ley 5

水平滚动视图:

http://developer.android.com/reference/android/widget/Horizo​​ntalScrollView.html

可以由用户滚动的视图层次结构的布局容器,允许它大于物理显示。


Jor*_*rdy 5

如果仍然有人出现在此页面上。关键是您的根布局,它将仅适用于FrameLayout(或已弃用的absolutelayout)。然后,您有两个选择可以使孩子的视野更大。

  1. 通过xml,这是快速简便的操作,但是您事先并不知道实际的屏幕宽度和高度,因此您可以通过为layout_width和layout_height设置一个高得离谱的值来覆盖所有屏幕来解决。
  2. 以编程方式计算屏幕尺寸,并使视图的宽度/高度与之成比例。

另外请注意,较大的视图仍从屏幕的左上角开始,因此要解决此问题,您将不得不给负的上下左右边距,即为视图宽度/高度的一半

FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) viewToMakeBigger.getLayoutParams();
int marginLeft = (int) (viewToMakeBigger.getWidth()*0.1);
int marginTop = (int) (viewToMakeBigger.getHeight()*0.1); 
params.width = (int) (viewToMakeBigger.getWidth()*1.2);
params.height = (int) (viewToMakeBigger.getHeight()*1.2);
params.leftMargin = -marginLeft;    
params.topMargin = -marginTop;
viewToMakeBigger.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)