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

我正在研究android api8。 我想动态地在屏幕上定位/放置视图。 但要使用setX和setY,我们需要API级别11及更高级别。 我们如何在API 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必须等于要将其添加到的子视图的父级。 ( 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);