我正在研究android api8。我想在屏幕上动态定位/放置视图。但要使用 setX 和 setY,我们需要 API 级别 11 及以上。我们如何在 API 8 中使用它,或者有什么替代方法吗?需要帮忙
问问题
19625 次
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 LinearLayout
,RelativeLayout.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 回答