Seite 1 von 1

Kugelsicheren Code zum verstecken der Android-Tastatur

Verfasst: 16.10.2018 19:37
von ccode_new
Hallo liebe Leute,

kennt hier jemand eine gut funktionierende JavaScript-Lösung um die Android-Tastatur auszublenden/ einzublenden.

Also wenn man in ein String/Edit - Gadget klickt soll die Android-Tastatur (unter Android - Versteht sich!) nicht angezeigt werden.

Danke!

Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Verfasst: 16.10.2018 19:45
von RSBasic
Da ich kein Android-Tablet zum Testen habe, kann ich dir leider nicht direkt helfen.
Bei Google fand ich folgende "Lösung": https://stackoverflow.com/questions/496 ... r-50006197
Es ist direkt nicht möglich, aber durch das Auslösen und Abfragen des Fokus-Events und durch ein Fake-Element könnte man es umgehen.

Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Verfasst: 17.10.2018 17:28
von Derren
Wozu ist das Control dann da?
Wenn du es deaktivierst, kann man immer noch den Text darin markieren, aber nichts mehr eingeben. Folglich springt auch die Tastatur nicht auf. Allerdings macht das nur Sinn wenn man manchmal was eingeben können soll und manchmal nicht.
Wenn du nur Text ausgeben willst, dann nimm halt ein Span oder eine Tabelle.

Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Verfasst: 17.10.2018 17:50
von ccode_new
Hallo Derren,

ich möchte einfach komplett die Androidtastatur deaktivieren können und bei Bedarf selber wieder aktivieren können.

Unabhängig ob ein String/-Edit-Gadget den Fokus hat oder auch nicht hat.

Das scheint aber nur nativ (z.B per JAVA) möglich zu sein.

Anbei:

Es dauert ja auch immer fast 15 Minuten bis SpiderBasic überhaupt eine Android-App erstellt. (Das ist eigentlich ziemlich uncool.)

Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Verfasst: 17.10.2018 17:52
von RSBasic
Du könntest alternativ ein Fake-Input-Element erstellen. Also ein Div mit dem gleichen Design eines Input-Feldes mit einem KeyDown-Handler.
Wenn du sowas als wiederverwendbare Funktion haben möchtest, sag Bescheid.

Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Verfasst: 17.10.2018 20:08
von ccode_new
@RSBasic:
Lass mal sein!
Wenn ich nur die Texteingabe in einem String-/Edit-Gadget sperren/aktivieren möchte, kann ich auch einfach:

SetAttribute(Eingabe, "readonly", "readonly")
und
RemoveAttribute(Eingabe, "readonly")

nutzen.

Hier trotzdem mal noch eine kleine SetReadOnly()-Funktion mit kleinem Testcode:

Code: Alles auswählen

Global edit0, edit1, btn0, fcolor, bcolor

Procedure SetReadOnly(gid, status) ;Für String-, oder Edit-Gadget
  If status > 0
    ! $(v_gid.div).find("input").attr("readonly", "readonly");
    ! $(v_gid.div).find("textarea").attr("readonly", "readonly");
  ElseIf status <= 0
    ! $(v_gid.div).find("input").removeAttr("readonly");
    ! $(v_gid.div).find("textarea").removeAttr("readonly");
  EndIf
EndProcedure

Procedure.s ReturnValue(gid) ; Stringrückgabe (beim StringGadget) = GetGadgetText(0)
  !return $(v_gid.div).find(".dijitInputInner").val();
EndProcedure

Procedure ChangeValue() ;Testfunktion
  If LCase(ReturnValue(edit0)) = "readonly"
    SetReadOnly(edit1, #True)
    ! $(v_btn0.div).find(".dijitButtonContents").css("background-color", "green");
    ! $(v_btn0.div).find(".dijitButtonContents").css("color", "white");
  ElseIf LCase(ReturnValue(edit0)) = "write"
    SetReadOnly(edit1, #False)
    ! $(v_btn0.div).find(".dijitButtonContents").css("background-color", "red");
    ! $(v_btn0.div).find(".dijitButtonContents").css("color", "black");
  EndIf
EndProcedure

OpenWindow(0,0,0,800,600,"Test",#PB_Window_Background)
StringGadget(0, 10, 10, 300, 30, "Hallo")
EditorGadget(1, 10, 45, 600, 600)
ButtonGadget(2, 320, 10, 30, 30, "Set")

edit0 = GadgetID(0)
edit1 = GadgetID(1)
btn0 = GadgetID(2)
fcolor = RGB(255,255,0)
bcolor = RGB(0,0,0)

BindGadgetEvent(2, @ChangeValue())

;Init (Ein bisschen Styling)
! $(v_edit0.div).find(".dijitTextBox").css("border-radius", "20px");
! $(v_edit0.div).find(".dijitInputInner").val("Gebe ReadOnly oder Write ein.");
! $(v_edit0.div).find(".dijitTextBox").css("color", spider_helper_ColorToHtml(v_fcolor));
! $(v_edit0.div).find(".dijitTextBox").css("background-color", spider_helper_ColorToHtml(v_bcolor));

! $(v_btn0.div).find(".dijitButtonContents").css("border-radius", "50px");
! $(v_btn0.div).find(".dijitButtonNode").css("border-radius", "50px");
! $(v_btn0.div).find(".dijitButtonContents").css("background-color", "red");