膨胀布局

时间:2017-09-27 01:15:20

标签: java android android-softkeyboard

我正在使用Android软键盘并为键应用自定义主题。

我正在使用以下代码执行此操作:

@Override
public View onCreateInputView() {

    // Set custom theme to input view.
    int themeLayout = sharedPreferences.getInt(THEME_KEY, R.layout.input_1);
    mInputView = (LatinKeyboardView) getLayoutInflater().inflate(
            themeLayout, null);
    mInputView.setOnKeyboardActionListener(this);

    // Apply the selected keyboard to the input view.
    setLatinKeyboard(getSelectedSubtype());

    return mInputView;
} 

但是我收到以下错误:

  

java.lang.ClassCastException:at   com.xxx.xxx.android.SoftKeyboard.onCreateInputView   (SoftKeyboard.java:159)at   com.xxx.xxx.android.SoftKeyboard.onStartInput   (SoftKeyboard.java:232)at   android.inputmethodservice.InputMethodService.doStartInput   (InputMethodService.java:2641)at   android.inputmethodservice.InputMethodService $ InputMethodImpl.startInput   (InputMethodService.java:590)at   android.inputmethodservice.IInputMethodWrapper.executeMessage   (IInputMethodWrapper.java:186)at   com.android.internal.os.HandlerCaller $ MyHandler.handleMessage   (HandlerCaller.java:37)在android.os.Handler.dispatchMessage上   (Handler.java:102)在android.os.Looper.loop(Looper.java:154)at   android.app.ActivityThread.main(ActivityThread.java:6682)at   java.lang.reflect.Method.invoke(Native Method)at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run   (ZygoteInit.java:1520)com.android.internal.os.ZygoteInit.main   (ZygoteInit.java:1410)

布局:

<com.sunzala.xxxx.android.LatinKeyboardView 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"
    android:background="@drawable/kb_bg_1"
    android:keyBackground="@drawable/key_bg_fill_grey"
    android:keyPreviewLayout="@layout/key_preview_layout"
    android:keyPreviewOffset="@dimen/keyPreviewOffset"
    android:keyTextColor="@color/white"
    android:popupLayout="@layout/keyboard_popup_layout" />

当我在我的设备上进行测试但在发布应用程序后在崩溃日志中出错时,这是有效的。

1 个答案:

答案 0 :(得分:1)

也许proguard缩小了您的自定义视图。您可以通过在build.gradle文件的release块中设置minifyEnabled false来禁用proguard。

如果您想使用proguard,请在proguard-rules.pro中添加以下行以保留自定义视图。

-keep public class * extends android.view.View {
    public <init> (android.content.Context );
    public <init> (android.content.Context , android.util.AttributeSet );
    public <init> (android.content.Context , android.util.AttributeSet , int);
    public void set *(...);
}