Nasıl Android için yumuşak bir klavye yapıyorum. Ancak klavyemin tasarımı çok geleneksel değil, geleneksel Keyboard
XML Düzenini kullanmak istemiyorum ve bunun yerine bir Relative Layout
kullanmak istiyorum.Android Layout Inflator
Bu benim giriş hizmeti yaratmak için izlenen öğretici geçerli: http://code.tutsplus.com/tutorials/create-a-custom-keyboard-on-android--cms-22615
yerine, normal Klavye Düzeni dosyasının bir Relative Layout
kullanmak için yollar arıyordu ve ben bu yığın taşması yazı bulundu:
Android: Non-Keyboard IME
Klavyede bağımsız bir görünüm oluşturmak için Layout Inflator'ı kullanmak zorundayım. Ancak, stackoverflow yazısında sunulan çözümden ne yapacağımı anlamadım.
Birisi, varsayılan Klavye Düzeni Dosyası yerine özel bir klavye için klavyeyi tasarlamak üzere bir Relative Layout
dosyasının nasıl kullanılacağını açıklayabilir mi?
DÜZENLEME:
custom_keyboard_layout benim klavye kullanmak istediğiniz bir Relative Layout
dosyasıdır: Burada
Projemin dosya yapıdır.
Bu şuna benzer:
<?xml version="1.0" encoding="utf-8"?>
<!-- This is a very rough test version of the layout -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.roymunson.vroy.customtestkeyboard.IntroScreen">
<Button
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="Custom Button." />
</RelativeLayout>
Benim Keyboard.xml
dosya şöyle görünür: düşündüğümden
package com.roymunson.vroy.customtestkeyboard;
import android.inputmethodservice.InputMethodService;
import android.inputmethodservice.Keyboard;
import android.inputmethodservice.KeyboardView;
import android.view.View;
public class customInputMethod extends InputMethodService {
private Keyboard keyboard;
@Override public void onInitializeInterface() {
keyboard = new Keyboard(this, R.xml.custom_keyboard_layout);
}
@Override
public View onCreateInputView() {
KeyboardView mInputView = (KeyboardView) getLayoutInflater().inflate(R.layout.keyboard, null);
mInputView.setKeyboard(keyboard);
return mInputView;
}
}
:
<?xml version="1.0" encoding="utf-8"?>
<android.inputmethodservice.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/keyboard"
android:layout_alignParentBottom="true">
</android.inputmethodservice.KeyboardView>
Benim customInputMethod.java
dosyası, şuna benzer bir InputMethodService
olduğunu Bu çalışmalı ve Bağıl Düzen dosyasını kullanmama izin ver özel klavyem için ama değil. Bundan gerçekten yeni olduğum için, ne yaptığımı bilmiyorum.
Neyi yanlış anlayacağım?
bağlantılı yayında cevap alır gibi yaklaşık olarak basit:
Sonra kodu değişti. Hangi kısımlarda sorun yaşıyorsun? –@MikeM. Yazımda bir düzenleme ekledim. Bu benim problemime biraz daha detay verir. – Roymunson
'thlate()' çağrısını 'R.id.custom_keyboard_layout' yerine kullanmak için değiştirin ve' mInputView''ü 'RelativeLayout' olarak değiştirin. –