【问题标题】:android: retain attributes children in RelativeLayout dynamically adding ImageViewsandroid:在RelativeLayout中保留属性子项动态添加ImageViews
【发布时间】:2013-11-02 00:29:10
【问题描述】:

动态添加 ImageView 时,如何在 RelativeLayout 中保留子项的属性?

我有一个自定义 ImageView 我想在运行时添加到一个空的 RelativeLayout(XML 中没有任何内容),我可以添加第一个,然后移动、缩放和旋转它们,它工作正常。 当我添加另一个 ImageView 时,所有先前添加的实例都会丢失它们的位置和大小,但是当我触摸它们时,它们只会恢复它们的大小,而不是位置。

在我的 ImageView 中,我覆盖了 onDraw 和 onTouch,是否需要覆盖其他内容? 也许我必须编写自己的 RelativeLayout 实现?我不会!

这是添加新 ImageView 的伪代码:

create new instance of ImageView
set bitmap
set scaletype
add imageview to the RelativeLayout container

我什至尝试为全新添加的 ImageView 设置标准布局参数,结果相同。 我试图根据每个孩子的位置获取边距,并使用 ImgeView.setLayout(l, t, r, b); 重新设置布局; 没有成功...

这里是 XML RelativeLayout 容器,很简单,也许太多了?

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

您需要更多详细信息来帮助我吗?请问一下,我也可以贴出代码,不过我得先清理一下,明天就可以了,同时请给我一些建议。

【问题讨论】:

    标签: android android-layout imageview android-relativelayout android-custom-view


    【解决方案1】:

    在 RelativeLayout 中,所有视图位置都与其他视图相关。因此,正如您在 xml 中所做的那样,您应该为每个视图提供相关参数。
    在添加imageView到RelativeLayout之前调用setLayoutParams(layoutParams)

    // Create a new RelativeLayout.LayoutParams instance
    RelativeLayout.LayoutParams layoutParams = 
       new RelativeLayout.LayoutParams(
           RelativeLayout.LayoutParams.WRAP_CONTENT,      
           RelativeLayout.LayoutParams.WRAP_CONTENT);
    
    // add roules
    layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
    layoutParams.addRule(.........
    layoutParams.addRule(.........
    
    //add params to view
    imageView.setLayoutParams(layoutParams);
    
    //add imageview to the RelativeLayout container
    yourRelativeLayout.addView(imageView);
    

    查看here 了解所有规则。

    【讨论】:

    • 您好,感谢您的回复。但是,如果我只想重新分配他们之前的相同位置(因为添加其中一个会重置所有内容)。您的解决方案似乎不允许我想要实现的目标。还是我错了?在这里您可以详细了解我的问题:stackoverflow.com/questions/19745975/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多