我已经使用 JavaFX 几天了,现在我在 android 上的文本字段出现问题。
我有一个非常基本的应用程序,只有一个文本字段。当我单击它输入一些文本时,一切都很好。
正如你在这里看到的
但是当我细化打字并单击其他项目时,UI 卡住了。不显示动画。当我再次单击文本字段时,键盘出现没有问题,我可以打字,我可以听到在 android 上打字的通常声音,但 UI 仍然卡住并且视觉上文本字段没有改变,如您在此处看到的那样。
当我关闭显示器并再次打开它时,魔法就会发生。之后我可以看到我输入的所有内容都在 TextField 中。UI 没有卡住,我输入的文本正确显示。但是,当我单击另一个按钮时,它会像第一次一样中断。
此外,我尝试使用javafx.scene.control和com.gluonhq.charm.glisten.control中的 TextField ,但它们都不起作用。
我正在使用的代码:
BasicView.java
package com.gluonapplication;
import com.gluonhq.charm.glisten.control.AppBar;
import com.gluonhq.charm.glisten.mvc.View;
import com.gluonhq.charm.glisten.visual.MaterialDesignIcon;
import com.gluonhq.charm.glisten.control.TextField;
public class BasicView extends View
{
TextField field;
public BasicView(String name)
{
super(name);
field = new TextField();
setTop(field);
}
@Override
protected void updateAppBar(AppBar appBar)
{
appBar.setTitleText("Basic View");
appBar.getActionItems().add(MaterialDesignIcon.SEARCH.button(e -> System.out.println("Search")));
}
}
GluonApplication.java
package com.gluonapplication;
import com.gluonhq.charm.glisten.application.MobileApplication;
import com.gluonhq.charm.glisten.visual.Swatch;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
public class GluonApplication extends MobileApplication
{
public static final String BASIC_VIEW = HOME_VIEW;
@Override
public void init()
{
addViewFactory(BASIC_VIEW, () -> new BasicView(BASIC_VIEW));
}
@Override
public void postInit(Scene scene) {
Swatch.BLUE.assignTo(scene);
((Stage) scene.getWindow()).getIcons().add(new Image(GluonApplication.class.getResourceAsStream("/icon.png")));
}
}
构建.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.0.9'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.gluonapplication.GluonApplication'
dependencies {
compile 'com.gluonhq:charm:3.0.0'
androidRuntime 'com.gluonhq:charm-android:3.0.0'
iosRuntime 'com.gluonhq:charm-ios:3.0.0'
desktopRuntime 'com.gluonhq:charm-desktop:3.0.0'
}
jfxmobile {
android {
manifest = 'src/android/AndroidManifest.xml'
androidSdk = 'D:\\AMAZING_THINGS\\AndroidSdk'
compileSdkVersion = '16'
}
}
那么,问题是如何达到“屏幕关闭/打开”的效果?我觉得它与失去焦点和更新 UI 有关,但我不确定。
谢谢你的时间。
我正在使用 Android 4.1.1,Java 8