Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将子视图添加到视图组的中心_Android_View_Viewgroup - Fatal编程技术网

Android 如何将子视图添加到视图组的中心

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

我已经创建了一个自定义的圆形进度条。现在我想把这个进度条添加到布局的中心。问题是,无论我如何更改传递给addView()的LayoutParams属性,它都会添加到活动的左上角。代码如下:

// 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);
  • 将进度条的高度和宽度设置为wrap_内容,或者用xml表示为40sp
  • 将属性android:layout\u gravity=“center”设置为线性布局中的进度条
  • 或以编程方式尝试以下操作:

    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)