2011-08-30 49 views
0

我试图创建一个Android键盘,现在我希望它只是膨胀,即显示,从main.xml中如何膨胀LinearLayout(用于Android键盘)?

这里的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 

任何想法?谢谢!

回答

6

试试下面代码..

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; 
    } 
} 
+0

似乎工作,谢谢! – Roger

+0

@NiranjPatel我们可以使用自定义键盘中的LIstview/Recyclview ..Plz help..Plz为我提供了一些链接/资源..谢谢 –

5

您正在将您的布局(基本上是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,但多数民众赞成unneccesary这里。