Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.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-如何使用Html.ImageGetter在edittext或文本视图中显示图像数量_Android_Html_Android Edittext - Fatal编程技术网

Android-如何使用Html.ImageGetter在edittext或文本视图中显示图像数量

Android-如何使用Html.ImageGetter在edittext或文本视图中显示图像数量,android,html,android-edittext,Android,Html,Android Edittext,我想做的是,当按下一个按钮时,edittext字段会出现一个图像 问题是,我想添加几次图像-这意味着每次单击图像都会添加到字符串中 问题是,在下一个代码中,我只看到最后按下的图像,而之前的图像变成了一个带有字母“obj”的小盒子 这是我的活动,有人能看到问题是什么吗 public class MainActivity extends Activity implements ImageGetter, OnClickListener { EditText et; ImageButton ib1; I

我想做的是,当按下一个按钮时,edittext字段会出现一个图像

问题是,我想添加几次图像-这意味着每次单击图像都会添加到字符串中

问题是,在下一个代码中,我只看到最后按下的图像,而之前的图像变成了一个带有字母“obj”的小盒子

这是我的活动,有人能看到问题是什么吗

public class MainActivity extends Activity implements ImageGetter, OnClickListener {
EditText et;
ImageButton ib1;
ImageButton ib2;
ImageButton ib3;
Spanned spanned;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.d("main", "0001");

    et = (EditText)findViewById(R.id.editText1);
    ib1 = (ImageButton) findViewById(R.id.imageButton1);
    ib2 = (ImageButton) findViewById(R.id.imageButton2);
    ib3 = (ImageButton) findViewById(R.id.imageButton3);
    ib1.setOnClickListener(this);
    ib2.setOnClickListener(this);
    ib3.setOnClickListener(this);




}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public Drawable getDrawable(String arg0) {


    int id = 0;

    if(arg0.equals("zero.png")){
        id = R.drawable.emoji_0030;
    }

    if(arg0.equals("slash.png")){
        id = R.drawable.emoji_0023;
    }
    LevelListDrawable d = new LevelListDrawable();
    Drawable empty = getResources().getDrawable(id);
    d.addLevel(0, 0, empty);
    d.setBounds(0, 0, empty.getIntrinsicWidth(), empty.getIntrinsicHeight());

    return d;

}

@Override
public void onClick(View v) {
    switch (v.getId()){

    case  R.id.imageButton2:

        toDisplay("zero.png");

        break;

    case   R.id.imageButton1:       
        toDisplay("slash.png");

        break;
    }

}


public void toDisplay(String input){

    String first = et.getText().toString();


    String second = "<img src ='"+input+"'>";
    String last = first +second;


     spanned = Html.fromHtml(last, this, null);

     et.setText(spanned);
     et.setTextSize(16);

}
public类MainActivity扩展活动实现ImageGetter、OnClickListener{
编辑文本;
图像按钮ib1;
图像按钮ib2;
图像按钮ib3;
跨越跨越;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
日志d(“主要”、“0001”);
et=(EditText)findViewById(R.id.editText1);
ib1=(ImageButton)findViewById(R.id.imageButton1);
ib2=(ImageButton)findViewById(R.id.imageButton2);
ib3=(ImageButton)findViewById(R.id.imageButton3);
ib1.setOnClickListener(此);
ib2.setOnClickListener(此);
ib3.setOnClickListener(本);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
公共可提取getDrawable(字符串arg0){
int id=0;
if(arg0.equals(“zero.png”)){
id=R.drawable.emoji_0030;
}
if(arg0.equals(“slash.png”)){
id=R.drawable.emoji_0023;
}
LevelListDrawable d=新的LevelListDrawable();
Drawable empty=getResources().getDrawable(id);
d、 addLevel(0,0,空);
d、 setBounds(0,0,empty.getIntrinsicWidth(),empty.getIntrinsicHeight());
返回d;
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.imageButton2:
toDisplay(“zero.png”);
打破
案例R.id.imageButton1:
显示(“slash.png”);
打破
}
}
要显示的公共void(字符串输入){
String first=et.getText().toString();
字符串秒=”;
字符串last=first+second;
span=Html.fromHtml(last,this,null);
et.setText(跨距);
et.setTextSize(16);
}

我认为问题出在
et.getText().toString()
中。它返回一些与HTML等效的文本,但不是HTML源代码本身。请尝试将
更改为显示(字符串输入)

编辑

public void toDisplay(String input){

    String first = Html.toHtml(et.getText());


    String second = "<img src ='"+input+"'>";
    String last = first +second;


     spanned = Html.fromHtml(last, this, null);

     et.setText(spanned);
     et.setTextSize(16);

}
public void显示(字符串输入){
String first=Html.toHtml(et.getText());
字符串秒=”;
字符串last=first+second;
span=Html.fromHtml(last,this,null);
et.setText(跨距);
et.setTextSize(16);
}
但对我来说,它在新行上添加了新的图像。发生这种情况的原因是
Html.toHtml()
通过

标记来包装文本。我认为你必须使用
字符串last=first+second;
来取代简单的连接,在
中插入


希望有帮助。

这不是一个好主意,因为如果我在编辑文本中写了一些东西,然后添加了一个图像,文本就会被删除。遗憾的是,它会将

添加到每一行-它看起来确实很糟糕,不是在一行中,因为我希望这是修复它的最简单方法将
字符串last=first+second;
替换为
字符串last=first.isEmpty()?第二:第一。替换(“

”,第二+“

”);
。但我相信您可以根据您的特定期望找到更好的解决方案。