15

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

4

3 回答 3

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对于 a LinearLayoutRelativeLayout.LayoutParams对于 aRelativeLayout等)。

此外,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; 
}
于 2012-08-30T11:35:52.327 回答
0

除了上面(Leon Lucardie 的回答)如果视图是 GroupView 并且当它被认为视图边缘超出屏幕时,您还必须放置:

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

避免视图内部布局的扭曲

于 2014-11-17T00:31:48.200 回答
0

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

ViewPropertyAnimator.animate(view).translationYBy(-yourY).setDuration(0);
于 2015-01-26T14:19:23.803 回答