Android benutzerdefiniertes Tastaturlayout, wobei ein weißer Rand an der Seite verbleibt

Ich arbeite an einer benutzerdefinierten Tastatur für Android und bin auf ein Problem gestoßen, bei dem die Tastatur eine weiße Linie / ein weißes Leerzeichen rechts zu lassen scheint, anstatt die übergeordnete Ansicht auszufüllen Symbole, es ist einfach Platzhalter Grafik für jetzt)

Unten sehen Sie mein Layout ...

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
    android:keyWidth="14%p"
    android:horizontalGap="0px"
    android:verticalGap="0px"
    android:keyHeight="60dp"
    >
    <Row>
        <Key android:codes="49" android:keyIcon="@drawable/rsz_emoji" android:horizontalGap="1%p" android:keyEdgeFlags="left"/>
        <Key android:codes="50" android:keyIcon="@drawable/rsz_emoji"/>
        <Key android:codes="51" android:keyIcon="@drawable/rsz_emoji"/>
        <Key android:codes="52" android:keyIcon="@drawable/rsz_emoji"/>
        <Key android:codes="53" android:keyIcon="@drawable/rsz_emoji"/>
        <Key android:codes="54" android:keyIcon="@drawable/rsz_emoji"/>
        <Key android:codes="48" android:keyIcon="@drawable/rsz_emoji" android:keyEdgeFlags="right"/>
    </Row>
    <Row>
        <Key android:codes="113" android:keyIcon="@drawable/rsz_emoji" android:horizontalGap="8%p" android:keyEdgeFlags="left"/>
        <Key android:codes="114" android:keyIcon="@drawable/rsz_emoji"/>
        <Key android:codes="116" android:keyIcon="@drawable/rsz_emoji"/>
        <Key android:codes="121" android:keyIcon="@drawable/rsz_emoji"/>
        <Key android:codes="111" android:keyIcon="@drawable/rsz_emoji"/>
        <Key android:codes="112" android:keyIcon="@drawable/rsz_emoji" android:keyEdgeFlags="right"/>
    </Row>
    <Row>
        <Key android:codes="1" android:keyIcon="@drawable/rsz_emoji" android:keyWidth="28%p" android:horizontalGap="8%p" android:keyEdgeFlags="left"/>
        <Key android:codes="46" android:keyIcon="@drawable/rsz_emoji" android:keyWidth="28%p"/>
        <Key android:codes="58" android:keyIcon="@drawable/rsz_emoji" android:keyWidth="28%p" android:keyEdgeFlags="right"/>
    </Row>
    <Row android:rowEdgeFlags="bottom">
        <Key android:codes="44" android:keyIcon="@drawable/globe" android:horizontalGap="8%p" android:keyEdgeFlags="left"/>
        <Key android:codes="47" android:keyIcon="@drawable/rsz_emoji"/>
        <Key android:codes="32" android:keyIcon="@drawable/rsz_emoji" android:keyWidth="28%p"/>
        <Key android:codes="1" android:keyIcon="@drawable/rsz_emoji"/>
        <Key android:codes="-5" android:keyIcon="@drawable/backspace" android:keyEdgeFlags="right"/>
    </Row>
</Keyboard>

Soweit ich sehen kann, ist es eine Frage von1%p ... Aber ich bin mir ein bisschen unsicher, wie ich es füllen soll, ohne meine Ausrichtungen zu verfälschen ... Zum Beispiel. Das Ändern der Lücke in der ersten Reihe in 2 würde das Problem beheben, aber die Ausrichtung durcheinander bringen.

Bei Bedarf wurde ein zusätzlicher Code für Sie hinzugefügt ...

Meine Klasse erweitertInputMethodService:

    private KeyboardView kv;
    private Keyboard keyboard;

    @Override
    public View onCreateInputView() {
        kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null);
        keyboard = new Keyboard(this, R.xml.custom_keyboard);
        kv.setPreviewEnabled(false);
        kv.setKeyboard(keyboard);
        kv.setOnKeyboardActionListener(this);
        return kv;
    }

    @Override
    public void onPress(int primaryCode) {

    }

    @Override
    public void onRelease(int primaryCode) {

    }

    @Override
    public void onKey(int primaryCode, int[] keyCodes) {
        InputConnection ic = getCurrentInputConnection();

        if (primaryCode == Keyboard.KEYCODE_DELETE) {
            ic.deleteSurroundingText(1, 0);
        } else {
            Drawable mDrawable = ResourcesCompat.getDrawable(getResources(), R.drawable.rsz_emoji, null);
            Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap();
            String path = MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "Emoticon", null);
            Uri fileUri = Uri.parse(path);

            Intent picMessageIntent = new Intent(Intent.ACTION_SEND);
            picMessageIntent.setPackage("com.android.mms");
            picMessageIntent.putExtra(Intent.EXTRA_STREAM, fileUri);
            picMessageIntent.setType("image/png");
            picMessageIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(picMessageIntent);
        }
    }

    @Override
    public void onText(CharSequence text) {

    }

    @Override
    public void swipeLeft() {

    }

    @Override
    public void swipeRight() {

    }

    @Override
    public void swipeDown() {

    }

    @Override
    public void swipeUp() {

    }

Meine Keyboard.xml

<?xml version="1.0" encoding="utf-8"?>
<android.inputmethodservice.KeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/keyboard"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    />

Styles.xml

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="CENSORED" >

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- Declares the input method service -->
        <service android:name=".CENSORED"
            android:label="@string/keyboard_name"
            android:permission="android.permission.BIND_INPUT_METHOD">
            <intent-filter>
                <action android:name="android.view.InputMethod" />
            </intent-filter>
            <meta-data android:name="android.view.im"
                android:resource="@xml/method" />
        </service>
    </application>

    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

Antworten auf die Frage(12)

Ihre Antwort auf die Frage