addView 如何设置这个view为MATCH_PARENT
时间: 2024-03-06 15:49:30 浏览: 31
你可以使用以下代码将一个View设置为MATCH_PARENT:
```
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
view.setLayoutParams(params);
```
其中,view是你想要设置为MATCH_PARENT的View对象。LayoutParams是这个View所在的父布局的LayoutParams,你需要根据具体情况使用正确的LayoutParams类型。
相关问题
动态添加view如何设置为match_parent
如果你想动态添加一个View并将其设置为match_parent,则可以使用LayoutParams。你可以在代码中设置LayoutParams的width和height属性为MATCH_PARENT,然后将其分配给新创建的View。下面是示例代码:
```
// 创建一个LinearLayout
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
// 创建一个TextView并将其添加到LinearLayout中
TextView textView = new TextView(context);
textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
linearLayout.addView(textView);
```
在这个示例中,我们首先创建了一个LinearLayout,然后将其LayoutParams设置为MATCH_PARENT。接下来,我们创建了一个TextView并将其LayoutParams设置为MATCH_PARENT,然后将其添加到LinearLayout中。这样,TextView就会占据整个LinearLayout的空间。
mCandidatesFrame.addView(view, new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 不显示
如果调用 `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));
}
});
```
这样可以确保在视图绘制完成后再添加子视图,避免出现显示问题。