Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用关联菜单在编辑器中插入文本和图片_Android - Fatal编程技术网

Android 使用关联菜单在编辑器中插入文本和图片

Android 使用关联菜单在编辑器中插入文本和图片,android,Android,我正在努力学习android编程。我成功地创建了屏幕并在其中导航。现在我正在尝试一些冒险的事情 我正在创建一个类似MS Word的文本编辑器,您可以在其中键入文本并使用关联菜单插入图库中的图像 我浏览了链接。不过,我有几个问题 EditText是此控件的正确控件吗 如何从光标所在的位置调用上下文菜单 如何将图像粘贴到光标所在的位置 对此的任何见解都将大有裨益。好的,让我们逐一解决: EditText是此控件的正确控件吗 当然,除非您想创建一个像MS word一样的应用程序,否则这将非常有效 类

我正在努力学习android编程。我成功地创建了屏幕并在其中导航。现在我正在尝试一些冒险的事情

我正在创建一个类似MS Word的文本编辑器,您可以在其中键入文本并使用关联菜单插入图库中的图像

我浏览了链接。不过,我有几个问题

  • EditText是此控件的正确控件吗
  • 如何从光标所在的位置调用上下文菜单
  • 如何将图像粘贴到光标所在的位置

  • 对此的任何见解都将大有裨益。

    好的,让我们逐一解决:

    EditText是此控件的正确控件吗

    当然,除非您想创建一个像MS word一样的应用程序,否则这将非常有效

    类似于多个编辑文本的内容可以用作word上的不同页面,您可以使用每个“页面”的常规XML属性指定长度和宽度,通过
    视图将它们分开,以获得页面的结尾和新页面机制的开始

    现在,要实现用光标添加图片,您只需创建一个上下文菜单,并以编程方式将该图像添加到布局中,结束
    编辑文本
    ,创建
    图像视图
    ,然后继续另一个
    编辑文本
    ,让我们看看如何做到这一点:

    首先是您的上下文菜单:

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context_menu, menu);
    if(item.getTitle().equals("Insert Image") ){
    
    InsertImage(Uri imageUri);
          }
    }
    
    如何从光标所在的位置调用上下文菜单

    如何将图像粘贴到光标所在的位置

    您需要实现一个名为
    View.OnCreateContextMenuListener
    的功能,在您按下的任何位置单击
    即可完成该功能,因此,正如您将看到的,您要么必须实现另一种方法来获取光标所在的位置,然后将编辑文本拆分为两个不同的
    编辑文本
    ,然后插入图像,要么必须始终按照图片所示将图像放在文本视图下

    其次,当创建上下文菜单时,我们可以调用一个方法,将其称为“InsertImage”,并使用从menuInflater传递的Uri参数或定义为类中的变量,以创建一个
    ImageView
    ,位于
    EditText
    之后,假设父布局是线性布局:

    LinearLayout LLayout = findViewById(R.id.linearLayout);
    
    ImageView mImageView = new ImageView(this);
    mImageView.setLayoutParams(new LinearLayout.LayoutParams(
                                         LinearLayout.LayoutParams.WRAP_CONTENT,
                                         LinearLayout.LayoutParams.WRAP_CONTENT));
    
    LLayout.addView(mImageView);
    

    在方法“
    插入图像
    ”完成后,如果图像已上载或未上载,则可以返回一个
    布尔值
    ,为您提供true,然后,您将创建另一个方法来启动一个新的
    编辑文本
    ,与
    图像视图
    完全相同,但如果它没有上载,则您可以调用
    移除视图
    ,方法与
    添加视图

    相同。我认为您应该使用添加图像和文本的方法。我有点困惑。ContextMenu的代码在哪里?MainActivity.Java?在哪里以及如何调用上下文菜单代码?