问题就是我做的游戏界面,当游戏结束通关后,如何给用户编辑自己名字的功能,相当于通关存盘功能。
我现在就在SurfaceView里画了个界面,不知道如果调出输入法编辑文字?图片地址:
参考以下所谓的“答案”做了下,
http://blog.chinaunix.net/space.php?uid=24406894&do=blog&id=2608997只能调出输入法,无法在输入法输入字符和canvas之间同步,而且有错误,不过网上到处都是转贴。
无语了,错误的乱贴,也没有人纠正。其实这功能比较简单,不过我水平实在是有限,折腾了2天没招了。
求助。
我现在就在SurfaceView里画了个界面,不知道如果调出输入法编辑文字?图片地址:
参考以下所谓的“答案”做了下,
http://blog.chinaunix.net/space.php?uid=24406894&do=blog&id=2608997只能调出输入法,无法在输入法输入字符和canvas之间同步,而且有错误,不过网上到处都是转贴。
无语了,错误的乱贴,也没有人纠正。其实这功能比较简单,不过我水平实在是有限,折腾了2天没招了。
求助。
解决方案 »
- 第一天学习Android 怎么见不了工程?
- ViewPager滚动很卡的问题
- Android UDP与PC机通讯问题!
- frameworks/policies/.../PhoneWindow.java 这个文件在哪里?
- timer.schedule(task, 20000);
- 在模拟器上用webservice获取数据的时候报 has stopped unexpectedly错
- nexus one 驱动
- android后台监控程序怎么写?
- openGL ES 2.0全屏纹理显示问题
- 安卓的广播的使用 有点经验不要吝啬啊
- 如何在 TabHost 页面下面添加一个菜单,该菜单不会隐藏。
- listview中progressBar的问题
比如点击横线区域就调用,但是在输入法输入的任何字符,都不能显示在canvas.drawtext内string里。也就是只能调出输入,无法编辑了。布局?我这里没用editText控件,是直接canvas写字符的,所以用不到布局
如果为了快速完成工作,能使用布局的地方使用布局挺好的!
我说明下,我没有用EditText控件,所以不需要用布局,因为整个界面就一个SurfaceView,其他没有1个控件,都是canvas画出来的,即使用了布局也就定义一个surfaceview,意思不大。遇到的问题是,输入法输入的文字,和SurfaceView/View里定义的String如何同步,并用canvas显示到Surfaceview/view的问题。可能我表述有问题,抱歉。
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.inputmethod.BaseInputConnection;
import android.view.inputmethod.CompletionInfo;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodManager;
public class test extends SurfaceView implements SurfaceHolder.Callback , Runnable {
SurfaceHolder holder=null;
String inputString="xyz";
InputMethodManager input=null;
public test(Context context)
{
super(context);
holder=this.getHolder();
holder.addCallback(this);
//this.setFocusable(true);
//this.setFocusableInTouchMode(true);
input=(InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
// TODO Auto-generated constructor stub
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
new Thread(this).start();
input.showSoftInput(this, 0);
}
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
class MyInputConnection extends BaseInputConnection{
public MyInputConnection(View targetView, boolean fullEditor) {
super(targetView, fullEditor);
// TODO Auto-generated constructor stub
}
public boolean commitText(CharSequence text, int newCursorPosition){
inputString=inputString+(String) text;
return true;
}
}
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
// TODO Auto-generated method stub
return new MyInputConnection(this,false);//super.onCreateInputConnection(outAttrs);
}
public void run() {
// TODO Auto-generated method stub
while(true){
Canvas c=holder.lockCanvas();
Paint p=new Paint();
p.setColor(Color.RED);
c.drawColor(Color.WHITE);
c.drawText(inputString, 100, 100, p);
holder.unlockCanvasAndPost(c);
}
}
}
2.1的还能输入字符,2.2的就不行了。
自动就有编辑修改的功能。