【问题标题】:Expand an edittext dynamically动态展开编辑文本
【发布时间】:2014-05-07 07:36:16
【问题描述】:

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

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

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

据我所知,图像可以设置为 onClickListener/onTouchListener,一旦调用 onClick/onTouch,我应该能够将图标添加到该位置,其中图标是图像并设置为 onTouchListener好吧。 当我单击该图像时,应该会出现一个编辑文本 - 但不确定如何使其动态扩展? 输入文本并单击按钮后,应该保存整个图像 - 以及编辑文本中的文本 - 我该怎么做?在画布上绘图?

我们将不胜感激! :)

【问题讨论】:

    标签: android dynamic android-edittext


    【解决方案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 步

    如果您将宽度设置为 match_parent 并将高度设置为 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();
    }
    

    【讨论】:

    • 非常感谢您的详细回答,我会尝试并告诉您它是否按我想要的方式工作!
    猜你喜欢
    • 2018-06-13
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多