我有布局,我想夸大那个
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</EditText>
</LinearLayout>
喜欢
LinearLayout ll=(LinearLayout)findViewById(R.id.llContainer);
View view;
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.question_free_text, null);
ll.addView(view);
其中ll是
<LinearLayout
android:id="@+id/llContainer"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
>
</LinearLayout>
在其他xml中,但问题是当它膨胀时显示但高度很大(fill_parent,它看起来像wrap_content,但布局中没有wrap_content)。有人能帮助我吗?
答案 0 :(得分:14)
正如Yashwanth Kumar在评论中正确提到的那样,inflate-method的第二个参数应该是插入新视图的根视图:
LinearLayout ll = (LinearLayout) findViewById(R.id.llContainer);
View view;
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.question_free_text, ll);
如果在inflate-call中提供了根视图,则LayoutInflator将调用此根视图的generateLayoutParams(ViewGroup.LayoutParams p)
方法以获取一些LayoutParams(基本上包含有关视图可以/应该有多大的信息),这将是传递到新视图。
请注意,如果您提供根视图,则膨胀的视图将通过root.addView(View child, LayoutParams params)
自动添加到根视图。
您还可以将第三个参数传递给inflate-method(boolean attachToRoot
),如果此值为false
,则新视图不会自动添加到根视图中,但LayoutParams是仍然设置为setLayoutParams(params)
。您可以使用此方法将手动视图添加到根视图(例如,在特定位置/索引处):
LinearLayout ll = (LinearLayout) findViewById(R.id.llContainer);
View view;
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.question_free_text, ll, false); // the LayoutParams of view are set here
ll.addView(view, 2);