【发布时间】:2017-12-13 10:14:45
【问题描述】:
我在this 之后创建了一个自定义循环进度条。现在我想将此进度条添加到布局的中心。问题是它被添加到活动的左上角,无论我如何更改传递给 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);
【问题讨论】:
-
只需在 xml 中使用居中对齐即可。或者如果你想在运行时添加它然后只需根据父布局分配 LayoutParams。
-
android.R.id.contentViewGroup通常是FrameLayout,而不是LinearLayout。不过,您不应该真正依赖它。将您的DualProgressView添加到您在布局中声明的ViewGroup,这样您就可以确切地知道它是什么,以及使用哪个LayoutParams。顺便说一句,你应该使用Activity来代替DualProgressView实例化Context,而不是getApplicationContext(),这样它就可以应用正确的主题和样式。 -
@ADM 现在我使用了
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(root.getLayoutParams());,它跨越了整个宽度并且不垂直对齐到中心。我不喜欢它。 -
同意迈克的观点。 @JasonStack 我认为问题出在您的 DualProgressView 上。发布您的 DualProgressView.java