返回Fragment后以编程方式添加ImageView

时间:2016-06-07 20:04:39

标签: android android-layout android-fragments imageview

以下情况:

我有一些包含一些ImageView的布局。我还有一个按钮来添加一些新的ImageViews。单击它时,您将获得一个可以选择图像的概述。然后概述活动结束,然后返回到片段。现在,选择的图像应该添加到布局中。

布局:



    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical
        android:id="@+id/myLinearLayout">

        <ImageView
            android:id="@+id/circle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/circle">

        </ImageView>
        <ImageView
            android:id="@+id/square"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/square">
        </ImageView>
      
       <ImageButton
            android:id="@+id/add_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center_horizontal"
            android:src="@drawable/add"/>

    </LinearLayout>
&#13;
&#13;
&#13;

片段

      @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_ID) {
        if (resultCode == Activity.RESULT_OK) {
            ImageView imageView = new ImageView(getContext());

            imageView.setImageResource(R.drawable.addedimg);

            imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT));

            myLinearLayout.addView(imageView);

        }
    }
}

从选择活动返回片段工作正常。为简单起见,我添加了一个硬编码的imgsource。

为什么它没有出现在布局上?我错过了什么吗?我需要使用LayoutInflater吗?

2 个答案:

答案 0 :(得分:1)

可能是它添加了 - 您可能想要启动“布局检查器” - 将您的应用程序/移动设备连接到它并观察是否有东西阻挡它或覆盖在此布局上。

顺便说一句,你正在使用拖动布局检查其父级布局参数。

答案 1 :(得分:0)

我比较了现有图像视图和新添加的不可见图像的属性:

新:

&#13;
&#13;
mOverScrollMode = 1
mOverlay = null
mPaddingBottom = 0
mPaddingLeft = 0
mPaddingRight = 0
mPaddingTop = 0
mParent = null
mPendingCheckForLongPress = null
mPendingCheckForTap = null
mPerformClick = null
&#13;
&#13;
&#13;

现有:

&#13;
&#13;
mOverScrollMode = 1
mOverlay = null
mPaddingBottom = 0
mPaddingLeft = 0
mPaddingRight = 0
mPaddingTop = 0
mParent = {DragFrameLayout@6904} "org.mobi.bluemoon.ui.DragFrameLayout{75a40af V.E...... ........ 0,0-720,949 #7f0e00eb app:id/main_layout}"
mPendingCheckForLongPress = null
mPendingCheckForTap = null
mPerformClick = null
&#13;
&#13;
&#13;

我们可以看到没有父设置为新的。

解决方案是:

  dragLayout.addView(imageView);
  dragLayout.addDragView(imageView);

谢谢你们!