Как мне сделать свою собственную клавиатуру для приложения в Android? - PullRequest
2 голосов
/ 16 февраля 2011

В настоящее время я работаю над приложением, для которого требуется клавиатура на другом языке (особенно на иврите).

Проблема в том, что я не знаю, с чего начать. Я не хочу, чтобы пользователю приходилось заходить в магазин приложений и устанавливать отдельное приложение с большим количеством языков, чтобы использовать мое приложение.

Я хочу, чтобы в моем приложении была доступна только клавиатура (т. Е. Она не должна влиять ни на что, кроме моего конкретного приложения). Я делаю это прямо сейчас, создавая его как часть основного макета, и просто делаю его видимым, когда пользователь нажимает кнопку «Редактировать текст».

Проблема с этим подходом заключается в том, что я не могу изменить его размер. Первоначально я пытался использовать 2 разных макета (один в папке res / layout, а другой в папке res / layout-lnd), но это вызывало различные проблемы в моем приложении, замедляя его.

Мне интересно 2 вещи, каждая из которых должна работать.

  1. Как мне создать раскладку для клавиатуры, чтобы перенастроить.
  2. Как бы я правильно сделал клавиатуру.

Вот код XML, который я использую специально для клавиатуры:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  android:visibility="gone"
  android:background="@color/puzzle_dark"  
  android:id="@+id/hebrwKeyboardView"  
  android:layout_width="fill_parent"  
  android:layout_height="146dip"  
  android:layout_gravity="right|center_vertical|center_horizontal|bottom"  
  android:fitsSystemWindows="true"  
  android:clipChildren="false"  
  android:orientation="vertical" >  
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  android:layout_width="wrap_content"  
  android:layout_height="145dip"  
  android:clipChildren="false"  
  android:layout_gravity="center_vertical|center_horizontal|bottom"  
  android:fitsSystemWindows="true"  
  android:orientation="horizontal" >  
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  android:layout_width="fill_parent"  
  android:layout_height="145dip"  
  android:clipChildren="false"  
  android:layout_gravity="center_vertical|center_horizontal|bottom"  
  android:fitsSystemWindows="true"  
  android:orientation="vertical" >  
  <TableRow android:layout_width="fill_parent"  
  android:layout_height="fill_parent"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:fitsSystemWindows="true"  
  android:clipChildren="false"  
  android:orientation="horizontal"  
  android:stretchColumns="true">  
  <LinearLayout   
  android:baselineAligned="true"  
  android:layout_width="fill_parent"  
  android:layout_gravity="center"  
  android:layout_height="fill_parent"  
  android:fitsSystemWindows="true"  
  android:clipChildren="false"  
  android:orientation="horizontal">  
  <Button  
  android:id="@+id/KoofButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:text="@string/Koof"  
  android:layout_gravity="center"  
  android:fitsSystemWindows="true"  
  android:ellipsize="marquee"/>  
  <Button  
  android:soundEffectsEnabled="true"  
  android:id="@+id/raishButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:text="@string/Raish"  
  android:layout_gravity="center_horizontal"  
  android:fitsSystemWindows="true"  
  android:ellipsize="marquee"/>  
  <Button  
 android:soundEffectsEnabled="true"  
  android:id="@+id/alephButton"  
  android:layout_gravity="center_horizontal"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:text="@string/Alef"  
  android:fitsSystemWindows="true"  
  android:ellipsize="marquee"/>  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/tetButton"  
  android:layout_width="wrap_content"  
  android:layout_gravity="center_horizontal"  
  android:layout_height="35dip"  
  android:text="@string/Tet"  
  android:fitsSystemWindows="true"  
  android:ellipsize="marquee"/>  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/vuvButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal"  
  android:text="@string/Vuv"  
  android:fitsSystemWindows="true"  
  android:ellipsize="marquee"/>  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/nunSophitButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal"  
  android:text="@string/NunSofit"   
android:fitsSystemWindows="true"   
android:gravity="fill"   
android:ellipsize="marquee"/>  
  <Button  
 android:soundEffectsEnabled="true"  
  android:id="@+id/memSofitButton"  
  android:layout_width="wrap_content"  
  android:layout_gravity="center_horizontal"  
  android:layout_height="35dip"  
  android:text="@string/MemSofit"  
  android:fitsSystemWindows="true"  
  android:ellipsize="marquee"/>  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/payButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"
  android:text="@string/Pay"  
  android:fitsSystemWindows="true"  
  android:layout_gravity="center_horizontal"  
  android:ellipsize="marquee"/>  
  </LinearLayout>  
  </TableRow>  
  <TableRow android:layout_width="fill_parent"  
  android:layout_height="fill_parent"  
  android:clipChildren="true"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:fitsSystemWindows="true"  
  android:orientation="horizontal">  
  <RelativeLayout android:layout_width="fill_parent"  
  android:clipChildren="true"  
  android:layout_height="fill_parent"  
  android:layout_gravity="center_horizontal|center"  
  android:gravity="bottom"  
  android:orientation="horizontal">  
  <Button  
  android:layout_alignWithParentIfMissing="true"  
 android:soundEffectsEnabled="true"  
  android:id="@+id/shinButton"  
  android:layout_width="wrap_content"  
  android:layout_centerHorizontal="true"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:layout_height="35dip"  
  android:text="@string/Shin"  
  android:layout_alignParentLeft="true"  
  android:fitsSystemWindows="true"
  />  
  <Button  
  android:layout_centerHorizontal="true"  
 android:soundEffectsEnabled="true"  
 android:layout_toRightOf="@id/shinButton"  
  android:id="@+id/dalidButton"  
  android:layout_width="wrap_content"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:layout_height="35dip"  
  android:text="@string/Dalid"  
  android:layout_alignWithParentIfMissing="true"  
  android:fitsSystemWindows="true"
  />  
  <Button  
  android:layout_alignWithParentIfMissing="true"  
  android:layout_centerHorizontal="true"  
android:soundEffectsEnabled="true"  
  android:id="@+id/gimleButton"  
  android:layout_toRightOf="@id/dalidButton"  
  android:layout_width="wrap_content"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:layout_height="35dip"  
  android:text="@string/Gimle"  
  android:fitsSystemWindows="true"
  />  
  <Button  
  android:layout_alignWithParentIfMissing="true"  
  android:layout_centerHorizontal="true"  
android:soundEffectsEnabled="true"  
  android:id="@+id/chufButton"  
  android:layout_toRightOf="@id/gimleButton"  
  android:layout_width="wrap_content"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:layout_height="35dip"  
  android:text="@string/Chuf"  
  android:fitsSystemWindows="true"
  />  
  <Button  
  android:layout_alignWithParentIfMissing="true"  
  android:layout_centerHorizontal="true"  
android:soundEffectsEnabled="true"  
  android:id="@+id/ieyinButton"  
  android:layout_toRightOf="@id/chufButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text="@string/Ieyin"  
  android:fitsSystemWindows="true"
  />  
  <Button  
  android:layout_alignWithParentIfMissing="true"  
  android:layout_centerHorizontal="true"  
android:soundEffectsEnabled="true"  
  android:id="@+id/yudButton"  
  android:layout_toRightOf="@id/ieyinButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text="@string/Yud"  
  android:fitsSystemWindows="true"
  />  
  <Button  
  android:layout_alignWithParentIfMissing="true"  
  android:layout_centerHorizontal="true"  
  android:soundEffectsEnabled="true"  
  android:id="@+id/chetButton"  
  android:layout_toRightOf="@id/yudButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text="@string/Chet"  
  android:fitsSystemWindows="true"
  />  
  <Button  
  android:layout_alignWithParentIfMissing="true"  
  android:layout_centerHorizontal="true"  
android:soundEffectsEnabled="true"  
  android:id="@+id/lamidButton"  
  android:layout_toRightOf="@id/chetButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text="@string/Lamid"  
  android:fitsSystemWindows="true"
  />  
  <Button  
  android:layout_alignWithParentIfMissing="true"  
  android:layout_centerHorizontal="true"  
  android:soundEffectsEnabled="true"  
  android:id="@+id/chufSofitButton"  
  android:layout_toRightOf="@id/lamidButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text="@string/ChufSofit"  
  android:fitsSystemWindows="true"
  />  
  <Button  
  android:layout_alignWithParentIfMissing="true"  
  android:layout_centerHorizontal="true"  
  android:soundEffectsEnabled="true"  
  android:id="@+id/paySofitButton"  
  android:layout_toRightOf="@id/chufSofitButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text="@string/PaySofit"  
  android:fitsSystemWindows="true"
  />  
  </RelativeLayout>  
  </TableRow>  
  <TableRow android:layout_width="fill_parent"  
  android:layout_height="fill_parent"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:fitsSystemWindows="true"  
  android:orientation="horizontal">  
  <LinearLayout android:layout_width="fill_parent"  
  android:layout_height="fill_parent"  
  android:layout_gravity="center_horizontal|center"  
  android:gravity="bottom"  
  android:orientation="horizontal">  
  <Button  
 android:soundEffectsEnabled="true"  
  android:id="@+id/zionButton"  
  android:layout_width="wrap_content"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:layout_height="35dip"  
  android:text="@string/Zion"  
  android:fitsSystemWindows="true"
  />  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/samichButton"  
  android:layout_width="wrap_content"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:layout_height="35dip"  
  android:text="@string/Samich"  
  android:fitsSystemWindows="true"
  />  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/betButton"  
  android:layout_width="wrap_content"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:layout_height="35dip"  
  android:text="@string/Bet"  
  android:fitsSystemWindows="true"
  />  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/heyButton"  
  android:layout_width="wrap_content"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:layout_height="35dip"  
  android:text="@string/Hey"  
  android:fitsSystemWindows="true"
  />  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/nunButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text="@string/Nun"  
  android:fitsSystemWindows="true"
  />  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/memButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text="@string/Mem"  
  android:fitsSystemWindows="true"
  />  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/tzadiButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text="@string/Tzadi"  
  android:fitsSystemWindows="true"
  />  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/tuffButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text="@string/Tuff"  
  android:fitsSystemWindows="true"
  />  
  <Button  
  android:soundEffectsEnabled="true"  
  android:id="@+id/tzadiSofitButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text="@string/TzadiSofit"  
  android:fitsSystemWindows="true"
  />  
  </LinearLayout>  
  </TableRow>  
  <TableRow android:layout_width="fill_parent"  
  android:layout_height="fill_parent"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:fitsSystemWindows="true"  
  android:orientation="horizontal">  
  <LinearLayout android:layout_width="fill_parent"  
  android:layout_height="fill_parent"  
  android:layout_gravity="center_horizontal|center"  
  android:gravity="bottom"  
  android:orientation="horizontal">  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/hebrewBackButton"  
  android:layout_width="wrap_content"  
  android:layout_height="35dip"  
  android:layout_gravity="right"  
  android:fitsSystemWindows="true"  
   android:text="&lt;--"/>  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/hebrewSpaceButton"  
  android:layout_width="150dip"  
  android:layout_height="35dip"  
  android:layout_gravity="center_horizontal|center_vertical|center"  
  android:text=""  
  android:fitsSystemWindows="true"
  />  
  <Button  
android:soundEffectsEnabled="true"  
  android:id="@+id/hebrewDoneButton"  
  android:layout_width="wrap_content"  
  android:layout_height="wrap_content"  
  android:layout_gravity="right"  
  android:text="Done"  
  android:fitsSystemWindows="true"
  />  
  </LinearLayout>  
  </TableRow>  
</TableLayout>
</TableLayout>
</FrameLayout>`

Вот изображение того, как оно выглядит сейчас в портретной и альбомной ориентации:
enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...