我正在EditText
设置以下属性,以便在用户单击EditText时可以在键盘上显示完成按钮.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Run Code Online (Sandbox Code Playgroud)
当用户点击屏幕键盘上的完成按钮(完成输入)时,我想更改RadioButton
状态.
如何从屏幕键盘上点击完成按钮?
我有一个相当复杂(不是真正的)xml布局文件.其中一个视图是v1
带有两个子节点的LinearLayout():EditText(v2
)和另一个LinearLayout(v3
).子LinearLayout又有一个EditText(v4
)和一个ImageView(v5
).
对于EditText v2,我将imeOptions作为
android:imeOptions="actionNext"
Run Code Online (Sandbox Code Playgroud)
但是,当我运行应用程序时,键盘return
不会检查next
,我希望它更改为next
.我该如何解决这个问题?
此外,当用户点击下一步时,我希望焦点转到EditText v4.我这样做吗?
对于那些真正需要查看代码的人:
<LinearLayout
android:id="@+id/do_txt_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/col6"
android:orientation="vertical"
android:visibility="gone" >
<EditText
android:id="@+id/gm_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/coldo_text"
android:hint="@string/enter_title"
android:maxLines="1"
android:imeOptions="actionNext"
android:padding="5dp"
android:textColor="pigc7"
android:textSize="ads2" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal" >
<EditText
android:id="@+id/rev_text"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/coldo_text"
android:hint="@string/enter_msg"
android:maxLines="2"
android:padding="5dp"
android:textColor="pigc7"
android:textSize="ads2" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:background="@drawable/colbtn_r”
android:clickable="true"
android:onClick=“clickAct”
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:src="@drawable/abcat” />
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 我有一个编辑文本,定义如下.
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:inputType="text"
android:hint="@string/field_text"
android:id="@+id/field"
/>
Run Code Online (Sandbox Code Playgroud)
我想设置一个自定义命令,以便当有人点击屏幕键盘上的Done/Go按钮时,单击一个按钮或只运行按钮运行的方法.我认为这与ime选项有关,但我还没弄清楚它们是如何工作的.在此先感谢您的帮助!
我尝试使用input.setImeOptions(EditorInfo.IME_ACTION_DONE)在软键盘上设置"完成"按钮;
但"完成"按钮根本不会显示在软键盘上.
有什么建议吗?
public void modif(int position) {
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setTitle("Modifica");
EditText input = new EditText(MainActivity.this);
input.setImeOptions(EditorInfo.IME_ACTION_DONE);
alert.setView(input);
final Editable value = input.getText();
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Toast.makeText(getApplicationContext(), value, Toast.LENGTH_LONG).show();
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.show();
}
Run Code Online (Sandbox Code Playgroud) 我发现当我在Java swing应用程序中显示一个JDialog
或一个新的时JFrame
,我将在Windows 7中将我的中文输入法从半字节模式切换到全字节模式.
为什么调用对话框或框架setVisible(true)
方法来切换我的IME设置?
有谁知道代码有什么问题,或者它是Java的错误?
重现问题的过程:
我的语言设置
我发现了一个类似的问题,通过Java中的Windows 7输入法自动切换字符宽度
并且在添加默认语言环境后,它仍然无法正常工作
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Locale;
public class MainWindow {
private JFrame frame;
private Locale l;
/**
* Create the application.
*/
public MainWindow() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
l = new Locale("zh", …
Run Code Online (Sandbox Code Playgroud) 我有EditText,用于在消息(电子邮件,短信)上输入内容.我希望消息能够立即发布在ActionDone按钮上.我使用以下代码:
message.setOnEditorActionListener((textView, i, keyEvent) -> {
switch (i) {
case EditorInfo.IME_ACTION_DONE:
if (messageCanBePosted()) {
SoftKeyboard.hide(message);
postMessage();
return true;
} else {
return false;
}
default:
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
但我也希望这个消息字段是多行的,就像在任何其他信使应用程序中一样.我可以用这条线来实现它:
android:inputType="textMultiLine"
Run Code Online (Sandbox Code Playgroud)
问题是在添加此行后,ActionDone按钮开始像Enter按钮一样.所以我EditorInfo.IME_ACTION_DONE
从来没有调用过捕获的回调.因此,每次用户按下该按钮光标移动到新行而不是发布消息.
如何保持EditText的多行行为(在多行显示文本的能力)和ActionDone按钮?
我注意到Google通过网址接受任何语言的音译和IME请求:
https://inputtools.google.com/request?text=$&itc=$&num=$\
&cp=0&cs=1&ie=utf-8&oe=utf-8&app=test
Run Code Online (Sandbox Code Playgroud)
$
对于任何语言和文本,where 是下面的变量.
例如,法语(试一试):
var text = "ca me plait",
itc = "fr-t-i0-und",
num = 10;
// Result:
[
"SUCCESS",
[
[
"ca me plait",
[
"ça me plaît"
]
]
]
]
Run Code Online (Sandbox Code Playgroud)
或者,普通话(试试):
var text = "shide",
itc = "zh-t-i0-pinyin",
num = 5;
// Result:
[
"SUCCESS",
[
[
"shide",
[
"??",
"??",
"??",
"??",
"??"
],
[],
{
"annotation": [
"shi de",
"shi de",
"shi de",
"shi de",
"shi de"
] …
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,我想警告用户,如果他们没有使用默认的Android软键盘.(即他们使用Swype或其他东西).
如何查看当前选择的输入法?
我想制作一个处理用户输入的控件,所以我希望能够处理不同的键盘,其中一种方法是使用IME.
如果您不处理它,当您有IME激活时会出现一个浮动窗口(例如日语写入活动).我发现需要处理的消息,但我不知道如何发送我正在捕获到IME的密钥以及何时获得有效的转换字符.
我正在尝试理解和解决我在Eclipse工作区日志中看到的错误,同时处理实现IME的Android应用程序.我是Android和Eclipse的新手.
错误是"com.utterkaos.keyboard.LatinKeyboardView无法实例化".
关联的堆栈跟踪是:
java.lang.UnsupportedOperationException:不支持的服务:位于android.inputmethodservice的android.inputmethodservice.KeyboardView(KeyboardView.java:376)的com.android.layoutlib.bridge.android.BridgeContext.getSystemService(BridgeContext.java:434)中的音频. KeyboardView.(KeyboardView.java:279)at com.utterkaos.keyboard.LatinKeyboardView.(LatinKeyboardView.java:30)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)at at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)at java.lang.reflect.Constructor.newInstance(Unknown Source)at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java: 402)在android.view.BridgeInflater的android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)的com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:166) .createViewFromTag(BridgeI nflater.java:135)在android.view.LayoutInflater.inflate(LayoutInflater.java:466)的android.view.LayoutInflater.inflate(LayoutInflater.java:372)at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate (RenderSessionImpl.java:321)com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:324)位于com的com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325). android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:372)at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart .java:1361)位于com.android.ide.eclipse.adt.internal.editors.layout的com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1115) .gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:941)位于com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegatePageChange(LayoutEditorDeleg)ate.java:450)位于org.eclipse.ui.part.MultiPageEditorPart.setActivePage(MultiPageEditorPart.java)的com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.pageChange(CommonXmlEditor.java:358) 1067)在com的com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.selectDefaultPage(AndroidXmlEditor.java:380)的org.eclipse.ui.forms.editor.FormEditor.setActivePage(FormEditor.java:607) .android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.addPages(AndroidXmlEditor.java:285)位于com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.addPages(CommonXmlEditor.java:283)在org.eclipse.ui.ui.Editor.AdditorReference上的org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138)org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:348) .createPartHelper(EditorReference.java:670)位于org.eclipse.ui.internal.WorkbenchPartReference.getPart(Workbe)的org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465)nchPartReference.java:595)org.eclipse.ui.Uternal中的org.eclipse.ui.internal.Editor.Reference.getEditor(EditorReference.java:289)org.eclipse.工作台上的org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2945)位于org.eclipse.ui.internal.WorkbenchPage $ 10.run(WorkbenchPage.java :org.eclipse.Swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)org.eclipse.ui.Uternal中的org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2789)org.eclipse.ui.internal. org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2764)上的org.eclipse.ui.ide.IDE.openEditor(IDE.java:651)中的WorkbenchPage.openEditor(WorkbenchPage.java:2773)位于org.eclipse.jdt.internal.ui的org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:355)的.eclipse.ui.ide.IDE.openEditor(IDE.java:610) .javaeditor.EditorUtility.openInEditor(EditorUt ility.java:164)org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:249)org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:228)org位于org.eclipse.jdt.internal.ui的org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:251)的.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:275) .packageview.PackageExplorerActionGroup.handleOpen(PackageExplorerActionGroup.java:376)atg.eclipse.jdt.internal.ui.packageview.PackageExplorerPart $ 4.open(PackageExplorerPart.java:538)org.eclipse.ui.OpenAndLinkWithEditorHelper $ InternalListener.open( OpenAndLinkWithEditorHelper.java:48)在org.eclipse的org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)的org.eclipse.jface.viewers.StructuredViewer $ 2.run(StructuredViewer.java:866). ui.internal.JFaceUtil $ 1.run(JFaceUtil.java:49)org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredVi)ewer.java:864)在org.eclipse上的org.eclipse.jer上的org.eclipse.jer.j上的org.eclipse.tructersView.handleOpen(StructuredViewer.java:1152)org.eclipse. jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:275)atg.eclipse.jface.util.OpenStrategy.access $ 2(OpenStrategy.java:269)org.eclipse.jface.util.OpenStrategy $ 1.handleEvent(OpenStrategy. java:309)org.eclipse.swt.wtt.EndTable.sendEvent(EventTable.java:84)atg.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)org.eclipse.swt.widgets .Display.runDeferredEvents(Display.java:4165)位于org.eclipse.wt.ui.Worky.RunEventLoop(Workbench.java:2701)的org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754) org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)org.eclipse.ui.internal.Workbench.access $ 4(Workbench.java:2499)org.eclipse.ui.internal.Workbench $ 7.在org.eclipse.core.databinding.observable.Realm.runW上运行(Workbench.java:679)ithDefault(Realm.java:332)位于org.eclipse.ui的org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)的org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) .internal.ide.application.IDEApplication.start(IDEApplication.java:123)位于org.eclipse.core.runtime.internal.adaptor的org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) .EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)位于org.eclipse.core.runtime.adaptor.EclipseStarter.run上的org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)(EclipseStarter) .java:344)atg.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)在org.eclipse.equinox.launcher.Main.in的java.lang.reflect.Method.invoke(未知来源)的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在org.eclipse上的org.eclipse.equinox.launcher.Main.run(Main.java:1410)的org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)上的vokeFramework(Main.java:622) .equinox.launcher.Main.main(Main.java:1386)
LatinKeyboardView.java的相关部分是:
public class LatinKeyboardView extends KeyboardView {
static final int KEYCODE_OPTIONS = -100;
public LatinKeyboardView(Context …
Run Code Online (Sandbox Code Playgroud)