Android – 在api中使用view.setX()和setY 8

我正在android api8上工作。 我想dynamic地在屏幕上放置/放置一个视图。 但是要使用setX和setY,我们需要API级别11和以上。 我们如何在API 8中使用它,或者有什么替代方法吗? 需要帮忙

Solutions Collecting From Web of "Android – 在api中使用view.setX()和setY 8"

你可以通过使用LayoutParams来做到这一点。 这些可以添加到android界面的组件来设置其界限和位置。

一个例子(在一个RelativeLayout的子视图上设置LayoutParams)

 RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //The WRAP_CONTENT parameters can be replaced by an absolute width and height or the FILL_PARENT option) params.leftMargin = 50; //Your X coordinate params.topMargin = 60; //Your Y coordinate childView.setLayoutParams(params); 

请注意,LayoutParams的types必须等于您要添加到的childview的父级。 ( LinearLayout.LayoutParamsLinearLayoutRelativeLayout.LayoutParamsRelativeLayout等)。

另外,而不是childView.setLayoutParams(params); 你也可以使用parentView.addView(childView,params); 在项目添加到父容器时设置Layoutparams。

注意! 坐标的值以像素为单位。 由于最好使用DP值来定义接口大小,因此可以使用这段代码将dp转换为像素:

 private int getPixels(int dipValue){ Resources r = getResources(); int px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, r.getDisplayMetrics()); return px; } 

如果视图是一个GroupView,当它被视为边缘出现在屏幕之外时,你还必须把以下内容(Leon Lucardie的答案)

 params.rightMargin=currentRightMargin -yourX; params.bottomMargin=currentBottomMargin -yourY; 

以避免视图的内部布局扭曲

您可以使用http://nineoldandroids.com/并从第1级获得API支持,以这种方式:

 ViewPropertyAnimator.animate(view).translationYBy(-yourY).setDuration(0);