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

时间:2012-08-30 11:22:52

标签: android android-layout position

我正在开发android api8。 我想动态地在屏幕上定位/放置视图。 但要使用setX和setY,我们需要API等级11及以上。 我们如何在API 8中使用它,或者有什么替代方案吗? 需要帮助

3 个答案:

答案 0 :(得分:30)

您可以使用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的类型必须等于要将其添加到的子视图的父级。 (LinearLayout.LayoutParams LinearLayoutRelativeLayout.LayoutParamsRelativeLayout。)

此外,当项目添加到父容器时,您也可以使用childView.setLayoutParams(params);来设置Layoutparams,而不是parentView.addView(childView,params);

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

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

答案 1 :(得分:0)

如果视图是一个GroupView,并且假设视图边缘在屏幕之外,那么你还必须把它放在上面(Leon Lucardie的回答):

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

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

答案 2 :(得分:0)

您可以使用http://nineoldandroids.com/并通过以下方式获得1级API支持:

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