0

Good morning, I am creating custom keyboard on android and I want when the user click caps button to view all letters in capital and when the user turn the caps off to return the letters to small (in the xml) and if I can change the caps button background when its enable.

here is the xml code for the letters:

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
    android:keyWidth="10%p"
    android:horizontalGap="0px"
    android:verticalGap="0px"
    android:keyHeight="60dp"
    >
    <Row>
        <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
        <Key android:codes="119" android:keyLabel="w"/>
        <Key android:codes="101" android:keyLabel="e"/>
        <Key android:codes="114" android:keyLabel="r"/>
        <Key android:codes="116" android:keyLabel="t"/>
        <Key android:codes="121" android:keyLabel="y"/>
        <Key android:codes="117" android:keyLabel="u"/>
        <Key android:codes="105" android:keyLabel="i"/>
        <Key android:codes="111" android:keyLabel="o"/>
        <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
    </Row>
    <Row>
        <Key android:codes="-500" android:keyLabel="" android:keyWidth="5%p" android:keyEdgeFlags="left"/>
        <Key android:codes="97" android:keyLabel="a"/>
        <Key android:codes="115" android:keyLabel="s"/>
        <Key android:codes="100" android:keyLabel="d"/>
        <Key android:codes="102" android:keyLabel="f"/>
        <Key android:codes="103" android:keyLabel="g"/>
        <Key android:codes="104" android:keyLabel="h"/>
        <Key android:codes="106" android:keyLabel="j"/>
        <Key android:codes="107" android:keyLabel="k"/>
        <Key android:codes="108" android:keyLabel="l"/>
        <Key android:codes="-500" android:keyLabel="" android:keyWidth="5%p" android:keyEdgeFlags="right"/>
    </Row>
    <Row>
        <Key android:codes="-1" android:keyLabel="CAPS" android:keyWidth="15%p" android:keyEdgeFlags="left"/>
        <Key android:codes="122" android:keyLabel="z"/>
        <Key android:codes="120" android:keyLabel="x"/>
        <Key android:codes="99" android:keyLabel="c"/>
        <Key android:codes="118" android:keyLabel="v"/>
        <Key android:codes="98" android:keyLabel="b"/>
        <Key android:codes="110" android:keyLabel="n"/>
        <Key android:codes="109" android:keyLabel="m"/>
        <Key android:codes="-5" android:keyLabel="DEL" android:keyWidth="15%p" android:isRepeatable="true"/>
    </Row>
    <Row android:rowEdgeFlags="bottom">
        <Key android:codes="-6" android:keyLabel="123?" android:keyWidth="20%p"  android:keyEdgeFlags="left"/>
        <Key android:codes="-300" android:keyLabel="AR"/>
        <Key android:codes="32" android:keyLabel="SPACE" android:keyWidth="40%p" android:isRepeatable="true"/>
        <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/dotoptions"/>
        <Key android:codes="-4" android:keyLabel="DONE" android:keyWidth="20%p" android:keyEdgeFlags="right"/>
    </Row>
</Keyboard>

and here is the code when cpas is clicked:

if(Character.isLetter(code) && caps){
                    code = Character.toUpperCase(code);
                }
Khalid AL Bitar
  • 181
  • 1
  • 7
  • Good luck! Hmmm... what is the question exactly? – yakobom Aug 07 '17 at 08:15
  • I mean the keyboard is look like this http://store4.up-00.com/2017-08/150209475185141.jpg what I want is when the user click on the caps, all letters button change to capital and the caps button change its background color – Khalid AL Bitar Aug 07 '17 at 08:38

1 Answers1

0

Perhaps there's a better way, but where you handle the caps key press you can iterate through all keys and make the label upper case, something like this:

Keyboard keyboard = keyboardView.getKeyboard();
List<Key> keys = keyboard.getKeys();
for (Key key : keys) { // NOTE: you should decide if you want to skip some keys
     key.label = key.label.toString().toUpperCase();
}
yakobom
  • 2,681
  • 1
  • 25
  • 33