簡體   English   中英

如何為LinearLayout(適用於Android鍵盤)充氣?

[英]How to inflate a LinearLayout ( for android keyboard )?

我正在嘗試創建一個android鍵盤,現在我只希望它膨脹,即顯示main.xml中的linearlayout

這是java文件

package keyboard.rob.com;

import ...

public class zyz extends InputMethodService 
implements KeyboardView.OnKeyboardActionListener {

    private KeyboardView mInputView;

    @Override public void onCreate() {
        super.onCreate();
    }

    @Override public View onCreateInputView() {
        mInputView = (KeyboardView) getLayoutInflater().inflate(R.layout.main, null);
        return mInputView;
    }
}

main.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_gravity="center" android:id="@+id/LL_whole" android:orientation="vertical" android:clickable="false">


    <LinearLayout android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:background="@layout/backrep" android:layout_gravity="center" android:id="@+id/LL_total" android:orientation="vertical" android:layout_height="wrap_content">
        <LinearLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:background="@drawable/spell_frame" android:layout_marginBottom="10px" android:layout_marginTop="5px" android:layout_gravity="center" android:id="@+id/LL_spell" android:paddingLeft="10px">
        </LinearLayout>


        <LinearLayout android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center" android:layout_width="wrap_content" android:id="@+id/LLrow1">

        </LinearLayout>
        <LinearLayout android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" android:layout_width="wrap_content" android:id="@+id/LLrow2"></LinearLayout>
        <LinearLayout android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" android:layout_width="wrap_content" android:id="@+id/LLrow3"></LinearLayout>
        <LinearLayout android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" android:layout_width="wrap_content" android:id="@+id/LLrow4">
        </LinearLayout>

    </LinearLayout>


</LinearLayout>

和它崩潰的錯誤:

08-29 20:21:28.128: ERROR/AndroidRuntime(10227): java.lang.ClassCastException: android.widget.LinearLayout

有任何想法嗎? 謝謝!

嘗試下面的代碼。

package keyboard.rob.com;

import ...

public class TotalKeyboard extends InputMethodService 
implements KeyboardView.OnKeyboardActionListener {

    private LinearLayout mInputView;

    @Override public void onCreate() {
        super.onCreate();
    }

    @Override public View onCreateInputView() {
        mInputView = (LinearLayout) getLayoutInflater().inflate(R.layout.main, null);
        return mInputView;
    }
}

您正在將布局(基本上是LinearLayout投射到KeyboardView 這給您一個classcast異常。 由於onCreateInputView()返回一個View ,因此足以刪除演員表。 LayoutInflater.inflate()已經返回一個View 無需將其強制轉換為任何東西。 LinearLayout擴展了View類,因此在這種情況下有效)

所以嘗試改變

mInputView = (KeyboardView) getLayoutInflater().inflate(R.layout.main, null);

mInputView = getLayoutInflater().inflate(R.layout.main, null);

或者,您可以將其LinearLayout轉換為LinearLayout ,但這在這里是不必要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM