mCandidatesFrame.addView(view, new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 不显示
时间: 2024-02-20 18:56:23 浏览: 72
WindowManager.addView()实现悬浮窗口播放视频
5星 · 资源好评率100%
如果调用 `mCandidatesFrame.addView(view, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));` 后不显示,可以检查以下几点:
1. 父容器 `mCandidatesFrame` 是否已经添加到布局中。如果没有添加到布局中,子视图是不会显示的。
2. `view` 的可见性是否为 `VISIBLE`。如果可见性为 `GONE`,子视图是不会显示的。
3. `view` 的宽高是否正确。如果宽高为0或者不正确,子视图也是不会显示的。
4. 如果 `view` 是 `TextView` 或者 `EditText` 等可输入控件,需要设置 `view` 的输入法类型,否则可能会导致无法显示。可以尝试在 `view` 上调用 `setRawInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS)` 方法。
如果以上方法都不能解决问题,可以尝试使用 `ViewGroup.post()` 方法在视图绘制完成后再添加子视图。例如:
```
mCandidatesFrame.post(new Runnable() {
@Override
public void run() {
mCandidatesFrame.addView(view, new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
}
});
```
这样可以确保在视图绘制完成后再添加子视图,避免出现显示问题。
阅读全文