我有一个用XML定义的布局。它还包括:

<RelativeLayout
    android:id="@+id/item"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
/>

我想用其他XML布局文件来膨胀这个RelativeView。我可能会根据情况使用不同的布局。我该怎么做呢?我尝试了不同的变化

RelativeLayout item = (RelativeLayout) findViewById(R.id.item);
item.inflate(...)

但没有一个运行良好。


当前回答

我不确定我是否跟上了你的问题-你是否试图将子视图附加到RelativeLayout?如果是这样,你想做的事情如下:

RelativeLayout item = (RelativeLayout)findViewById(R.id.item);
View child = getLayoutInflater().inflate(R.layout.child, null);
item.addView(child);

其他回答

attachtorroot设置为True

假设我们在XML布局文件中指定了一个按钮,将其布局宽度和布局高度设置为match_parent。

<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/custom_button">
</Button>

在此按钮上单击事件,我们可以设置以下代码来膨胀此活动的布局。

LayoutInflater inflater = LayoutInflater.from(getContext());
inflater.inflate(R.layout.yourlayoutname, this);

希望这个方法对你有用。

当在Kotlin中添加一个布局到一个Activity时,请参见以下步骤:

只添加在活动-一个布局作为父 new的Xml文件 给出R的值。 val parent: LinearLayout =findViewById(R.id.stars) Val view = LayoutInflater.from (applicationContext) .inflate (R.layout.another,家长,假)

如果父项不需要,可以为空,但是会出现警告信息

view.findViewById<ImageView>(R.id.ivTimer).setImageResource(R.drawable.t2)

任何视图都必须以这种方式设置值,最后添加

parent.apply {  addView(view)}

如果你不在一个活动中,你可以使用静态的from()方法从LayoutInflater类获得一个LayoutInflater,或者从上下文方法getSystemService()请求服务:

LayoutInflater i;
Context x;       //Assuming here that x is a valid context, not null

i = (LayoutInflater) x.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//OR
i = LayoutInflater.from(x);

(我知道这已经是4年前的事了,但仍然值得一提)

如果你试图将子视图附加到RelativeLayout?你可以照着做

RelativeLayout item = (RelativeLayout)findViewById(R.id.item);
View child = getLayoutInflater().inflate(R.layout.child, item, true);

更简单的方法是使用

View child = View.inflate(context, R.layout.child, null)
item.addChild(child) //attach to your item