如何动态创建图像视图?

时间:2014-03-20 12:13:18

标签: android xml user-interface android-imageview

enter image description here

大家好。我需要创建这样的东西,显示在图片中。我不知道我应该如何实现它? 如果我按相机按钮并添加照片 - 必须将其添加到该列表中。

我想创建一行不可见的ImageView并在需要时初始化它们,但我认为这是不好的解决方案。

6 个答案:

答案 0 :(得分:0)

您可以使用这种方式动态创建图像视图:

ImageView iv=new ImageView(context);
        iv.setId(id);
        iv.layout(l, t, r, b);

l,t,r和b分别指定左,上,右和下的填充 然后您可以将此imageview添加到相应的布局

答案 1 :(得分:0)

有很多方法可以做。如果任何数据更改同时更新listview和gridview适配器,则将第一部分用作ListView,将第二部分用作自定义GridView。

答案 2 :(得分:0)

在捕获图像后使用此功能

    //LinearLayOut Setup
        LinearLayout linearLayout= new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.HORIZONTAL);

        linearLayout.setLayoutParams(new LayoutParams(
                LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT));

        //ImageView Setup
        ImageView imageView = new ImageView(this);
        //setting image resource
        imageView.setImageResource(R.drawable.play);
        //setting image position
        imageView.setLayoutParams(new LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));

        //adding view to layout
        linearLayout.addView(imageView);
        //make visible to program
        setContentView(linearLayout);

答案 3 :(得分:0)

您可以动态添加在xml中定义默认值的视图以使用inflater。 "父母"在下面的代码中应该是一个类似Linear或RelativeLayout的ViewGroup,甚至是GridLayout。

您可以使用水平方向的LinearLayout来获得您正在寻找的效果。

    LayoutInflater inflater = getActivity().getLayoutInflater();
    final ImageView iv = (ImageView) inflater.inflate(R.layout.imageview_thumb, parent, false);

    //Zero means its in the back;
    parent.addView(iv, 0);

布局代码:

   <?xml version="1.0" encoding="utf-8"?>
  <ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/imageview_fc"
    android:layout_width="142dp"
    android:layout_height="142dp"
    android:scaleType="fitCenter"
    android:layout_marginLeft="5dp"
    android:background="@android:color/transparent"
  />

答案 4 :(得分:0)

以下是动态添加图像视图的代码。

ImageView image = new ImageView(this);
LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
image.setLayoutParams(vp);
image.setMaxHeight(50);
image.setMaxWidth(50);
// other image settings
image.setImageDrawable(drawable);
theLayout.addView(image);

theLayout是您的父级布局,其中将添加图像视图。

答案 5 :(得分:0)

创建一个图库以水平显示图像。捕获图像时,将其写入文件夹并从该文件夹中读取所有文件。每次捕获图像时,都需要刷新图库数据。如果你想要一个带有十字按钮的图像,那么创建一个单独的xml文件,如下所示

 <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" 
android:background="#FF8825">


<ImageView 
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FF2225"/>

<ImageButton 
    android:id="@+id/crossButton"
    android:layout_marginRight="5dp"
    android:layout_marginTop="5dp"
    android:background="@android:color/transparent"
    android:layout_gravity="top|right"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/btn_dialog_normal"/>

并为每个图库项目充气