api 11下的setTop替代方案

时间:2013-12-17 09:35:50

标签: android android-api-levels

我一直在寻找android中的android.widget.ImageView.setTop#方法的替代品,它可以用于api的11或Honeycomb。这种替代方案是否可用?

2 个答案:

答案 0 :(得分:2)

对于Honeycomb(API Level 11)以下的任何内容,您必须使用setLayoutParams(...)。 您可以在Android中动态设置视图的位置。例如,如果您在xml文件的LinearLayout中有一个ImageView。那么您可以通过LayoutParams设置其位置。但请确保根据xml文件中的布局采用LayoutParams。根据所采用的布局,有不同的LayoutParams。 / p>

以下是要设置的代码:

 FrameLayout.LayoutParams layoutParams=new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    layoutParams.setMargins(int left, int top, int right, int bottom);
    imageView.setLayoutParams(layoutParams);

答案 1 :(得分:0)

来自Android文档:doc

  

设置此视图相对于其父级的顶部位置。此方法应由布局系统调用,通常不应调用,因为布局可随时更改属性。

不应该直接调用此方法,主要是因为不同的ViewGroups具有不同的布局方法,这使得此方法不一致(framelayout)。

正如@nitesh goel建议的那样,使用边距或填充来设置子视图与其在ViewGroup中的原始位置之间的间距。 doc

  

尺寸,填充和边距   视图的大小用宽度和高度表示。视图实际上具有两对>宽度和高度值。

     

第一对称为测量宽度和测量高度。这些维度定义了视图在其父级中的大小(有关详细信息,请参阅布局。)可以通过调用getMeasuredWidth()和getMeasuredHeight()来获取测量的维度。

     

第二对简称为宽度和高度,有时也称为绘图宽度和绘图高度。这些尺寸定义了屏幕上,绘图时和布局后视图的实际大小。这些值可以但不必与测量的宽度和高度不同。可以通过调用getWidth()和getHeight()获得宽度和高度。

     

要测量其尺寸,视图会考虑其填充。填充以像素表示,用于视图的左侧,顶部,右侧和底部。填充可用于将视图的内容偏移特定量的像素。例如,左边的填充为2会将视图的内容推到左边缘右侧2个像素。可以使用setPadding(int,int,int,int)或setPaddingRelative(int,int,int,int)方法设置填充,并通过调用getPaddingLeft(),getPaddingTop(),getPaddingRight(),getPaddingBottom(),getPaddingStart(查询)进行查询。 ),getPaddingEnd()。

     

即使视图可以定义填充,它也不会为边距提供任何支持。但是,视图组提供了这样的支持。有关详细信息,请参阅ViewGroup和ViewGroup.MarginLayoutParams。