动态展开edittext

时间:2014-05-07 07:36:16

标签: android dynamic android-edittext

我想在Android上执行以下操作:

  1. 点击图片 - >应该出现触摸点上的图标
  2. 当我再次点击该地点时,会出现一个EditText
  3. 当我输入内容时,此EditText应动态展开
  4. 原始图像应使用EditText和我输入的文本
  5. 保存

    实现这一目标的最佳方法是什么?

    据我所知,图像可以设置为onClickListener / onTouchListener,一旦onClick / onTouch被调用,我应该能够在该位置添加一个图标,其中图标是图像,并设置为onTouchListener为好。 当我点击该图像时,会出现一个edittext - 不知道如何让它动态扩展? 输入文本并单击一个按钮后,应保存整个图像(包含edittext中的文本) - 我该怎么做?画在画布上?

    帮助将非常感谢! :)

1 个答案:

答案 0 :(得分:1)

第1步

您的视图应位于RelativeLayout中,以便将它们放在彼此之上。按ImageView时,小的将设置为Visible(它必须在xml文件中不可见或以编程方式隐藏)。

imgV.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        imageViewButton.setVisibility(View.VISIBLE);
    }
});

第2步

按小图片时,EditText将变为可见。与上面设定的相同。

imageViewButton.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        editText.setVisibility(View.VISIBLE);
    }
});

第3步

如果将width设置为match_parent并将height设置为wrap_content,则EditText会在键入时自动扩展。

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10" >

</EditText> 

第4步

如果要保存布局,请在onClick事件中实现此功能。 (在下面的例子中,它是一个LinearLayout,但你会有一个RelativeLayout,我想你可以根据你的需要改变它)

根据How to save the layout view as image or pdf to sd card in android?

的答案

在清单文件中添加权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

使用以下代码

LinearLayout content = findViewById(R.id.rlid);
content.setDrawingCacheEnabled(true);
Bitmap bitmap = content.getDrawingCache();
File file,f;                    
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) 
    {  
         file =new File(android.os.Environment.getExternalStorageDirectory(),"TTImages_cache");
         if(!file.exists())
        {
          file.mkdirs();

         } 
         f = new File(file.getAbsolutePath()+file.seperator+ "filename"+".png");
    }
  FileOutputStream ostream = new FileOutputStream(f);                                   
  bitmap.compress(CompressFormat.PNG, 10, ostream);
  ostream.close();

 } 
 catch (Exception e){
 e.printStackTrace();
}