Android 如何将子视图添加到视图组的中心
我已经创建了一个自定义的圆形进度条。现在我想把这个进度条添加到布局的中心。问题是,无论我如何更改传递给addView()的LayoutParams属性,它都会添加到活动的左上角。代码如下:Android 如何将子视图添加到视图组的中心,android,view,viewgroup,Android,View,Viewgroup,我已经创建了一个自定义的圆形进度条。现在我想把这个进度条添加到布局的中心。问题是,无论我如何更改传递给addView()的LayoutParams属性,它都会添加到活动的左上角。代码如下: // Create a progress bar to display while the list loads mProgressBar = new DualProgressView(getApplicationContext()); ViewGroup r
// Create a progress bar to display while the list loads
mProgressBar = new DualProgressView(getApplicationContext());
ViewGroup root = findViewById(android.R.id.content);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(500, 500, Gravity.CENTER);
root.addView(mProgressBar,params);
ViewGroup布局=(ViewGroup)findviewbyd(android.R.id.content).getRootView();
LinearLayout.LayoutParams params=新建
LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_父项,LinearLayout.LayoutParams.MATCH_父项);
LinearLayout ll=新的LinearLayout(此活动);
ll.设置重力(重心);
ll.addView(progressBar);
布局。添加视图(ll,参数)代码>只需在xml中使用它,中间对齐即可。或者,如果您想在运行时添加它,那么只需根据父布局分配布局参数。android.R.id.content
ViewGroup
通常是FrameLayout
,而不是LinearLayout
。不过,你不应该真的依赖它。将您的DualProgressView
添加到您在布局中声明的ViewGroup
,以便您确切知道它是什么,以及要使用哪个LayoutParams
。顺便说一句,您应该使用活动
来实例化DualProgressView
的上下文,而不是getApplicationContext()
,这样它可以应用正确的主题和样式。@ADM现在我使用了LinearLayout.LayoutParams=newlinearLayout.LayoutParams(root.getLayoutParams());代码>并且它跨越整个宽度,并且不垂直于中心对齐。我不喜欢,同意你的看法,迈克@我认为问题在你看来。发布您的DualProgressView.java这将使进度条居中,但它仍然太大。如何以编程方式设置其大小?您也可以指定progressbar大小,但这样做:ll.addVIew(progressbar,30,30)