动态添加视图并设置参数和规则无法正常工作(android)

Posted

技术标签:

【中文标题】动态添加视图并设置参数和规则无法正常工作(android)【英文标题】:Adding View dynamically and setting Parameters and rules is not working properly (android) 【发布时间】:2015-12-08 07:54:13 【问题描述】:

我在我的 android 项目中遇到了问题。在这里,我有一个 imageButton ,单击它时,我必须膨胀一个布局文件并将其动态添加到相对布局中。添加视图工作正常。但问题是添加此子视图后,我需要将图像按钮移动到新子布局下方。但我的 imageButton 在子视图下膨胀,也许我缺少一些 LayoutParameters 和规则。

这是我的代码

private void addDestinationViews() 

    View destinationChildView = LayoutInflater.from(getActivity()).inflate(R.layout.destination_city_item, null);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.MATCH_PARENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    params.addRule(RelativeLayout.ALIGN_TOP, R.id.add_destinationbutton);
    destinationChildView.setLayoutParams(params);

    mInflated_view_holder.addView(destinationChildView);

这是我要膨胀的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:padding="10dp">

<TextView
    android:layout_
    android:layout_
    android:background="@drawable/add_destination_button_back"
    android:text="afaf"
    android:textSize="18sp"
    android:paddingLeft="30dp"
    android:padding="10dp"
    android:gravity="start|center"/>

<ImageButton
    android:id="@+id/cancle_destination_imagebutton"
    android:layout_
    android:layout_
    android:background="@drawable/cross_place_icon"
    android:scaleType="centerInside"
    android:layout_alignParentRight="true"
    android:layout_marginRight="10dp"
    android:layout_marginTop="10dp"/>

这是承载膨胀布局的相对布局

<RelativeLayout
        android:id="@+id/inflated_view_holder_three"
        android:layout_
        android:layout_
        android:layout_below="@+id/child_counter_title"
        android:layout_marginTop="15dp">

        <ImageButton
            android:id="@+id/add_destinationbutton"
            android:layout_
            android:layout_
            android:src="@drawable/add_place_icon"
            android:layout_alignParentRight="true"
            android:layout_marginRight="5dp"
            android:background="@drawable/add_destination_button_back"/>

    </RelativeLayout>

P.S我忘了提到这个子视图将在 imageButton press 时添加。所以这里的代码需要是动态的。

【问题讨论】:

【参考方案1】:

使用它来托管您的膨胀布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_
        android:layout_>

        <RelativeLayout
            android:id="@+id/inflated_view_holder_three"
            android:layout_
            android:layout_
            android:layout_marginTop="15dp">

        </RelativeLayout>

        <ImageButton
            android:id="@+id/add_destinationbutton"
            android:layout_
            android:layout_
            android:layout_alignParentRight="true"
            android:layout_below="@+id/inflated_view_holder_three"
            android:layout_marginRight="5dp"
            android:src="@drawable/ic_launcher" />
        <!--android:background="@drawable/add_destination_button_back"-->
    </RelativeLayout>

如有任何问题请告诉我

【讨论】:

谢谢伙计,你救救我。但我之前提到的另一件事不起作用。就像在膨胀第一个视图之后,如果用户按下图像按钮,新视图需要在另一个视图上膨胀。可能需要一些布局参数和布局规则运行时,但我不知道应该是什么。 @桑迪

以上是关于动态添加视图并设置参数和规则无法正常工作(android)的主要内容,如果未能解决你的问题,请参考以下文章

动态生成的表单无法正常工作

xcodebuild 命令无法与动态可可触摸框架一起正常工作

在XIB文件中添加带有动态内容的UITableView

当 addSubview 和 release 在添加的视图中无法正常工作时

自动布局 swift 在标签上无法正常工作

SVG 到 PDF 在 Rails 5.0 中无法正常工作