Android 将视图添加到指定位置的线性布局

Android 将视图添加到指定位置的线性布局,android,android-linearlayout,Android,Android Linearlayout,我有以下带有LinearLayout的main.xml文件 <?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

我有以下带有LinearLayout的main.xml文件

<?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"
    android:weightSum="1" android:id="@+id/llid">
    <TextView android:text="Client profile"
    android:id="@+id/ProfileName"
    android:layout_width="fill_parent"
    android:textStyle="bold"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal">
    </TextView>    
    <TextView android:text="Specs"
    android:id="@+id/Specs"
    android:layout_width="fill_parent"
    android:textStyle="bold"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal">
    </TextView>
</LinearLayout>
但是,我想在我的LinearLayout中的两个文本视图之间添加ImageView。在android文档中,我似乎找不到在另一个视图之前或之后添加视图的方法。我该怎么做

NB我打电话

setContentView(R.layout.main);

之前,我将ImageView添加到LinearLayout。

将ImageView添加到xml中,如果没有使用,则将其设置为不可见
(image.setVisibility(View.invisible))
。当没有设置图像时,它可能不会显示任何内容。

文档状态您可以使用索引将其插入您想要的位置。我看到您仅使用视图的签名,您是否尝试了带有索引参数的签名

public void addView(View child, int index) 
在xml中

<?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"
    android:weightSum="1"
    android:id="@+id/llid">

    <TextView android:text="Client profile"
        android:id="@+id/ProfileName"
        android:layout_width="fill_parent"
        android:textStyle="bold"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal">
    </TextView>    

    <ImageView android:id="@+id/imagefield" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </ImageView> 

    <TextView android:text="Specs"
        android:id="@+id/Specs"
        android:layout_width="fill_parent"
        android:textStyle="bold"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal">
    </TextView>

</LinearLayout>

视图
添加到
视图组
时,您可以设置视图在父视图中的位置


您有两个视图,因此(从零开始计算)您希望添加到第一个位置;只需调用
ll.addView(图1)
要将它放在两个
文本视图之间,我面临着类似的问题。在我的例子中,我想在另一个LinearLayout的最后一个位置添加一个LinearLayout。为了完成它,我做了:

LinearLayout parentLayout = (LinearLayout) findViewById(R.id.parentLayout);
LinearLayout layout = new LinearLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

// add others views to your linear layout

parentLayout.addView(layout, parentLayout.getChildCount());

获取视图组中视图的位置的步骤

                val targetPosition = oldLL.indexOfChild(viewToAdd)
                newLL.addView(viewToAdd,targetPosition)
在视图组中的某个位置添加视图的步骤

                val targetPosition = oldLL.indexOfChild(viewToAdd)
                newLL.addView(viewToAdd,targetPosition)

你为什么要这样做?只需在布局中声明imageview并将source设置为它,而不是在代码中插入imageview。这不会起作用。在运行时,我动态加载图像并希望在布局中显示它。您可以动态设置ImageView的源。我真的不明白为什么要这样做。我想你可能把一些简单的事情复杂化了:)我想你想使用View.GONE,除非你想留下一个空白。你也可以使用索引插入,这正是我需要的。谢谢我想知道如果我有两个视图,我希望第一个视图占据我布局的一半以上,而另一个视图只占我布局的一小部分,我如何做到这一点?我可以将其用于其他布局(例如相对布局)吗?我来这里是想学习如何将视图添加到相对于另一个子视图的特定位置,以便动态确定。我意识到这个问题并不是直接问这个问题,所以我不想自己回答,我只想在这个问题上补充一点:首先使用
ViewGroup.indexOfChild(View View View)
获取另一个
视图的索引,然后使用带有此处详细索引的
addView
方法插入相对于现有视图的新
视图。@TimM。伙计,非常感谢。我一直在寻找它。我在将textview插入布局时出现indexoutofbound错误。它只解释了index=2,count=0。。。。。