android 自訂鍵盤,代碼實現自訂屬性(自訂鍵盤背景,各個鍵的背景等)

來源:互聯網
上載者:User

標籤:

由於工作需要,所以接觸了自訂鍵盤。但是發現自己寫的鍵盤太過醜陋了一些。廢話不多說,先

   

第一張是修改後的。第二張是修改錢的。這基本上就是

OK。接下來就是重點了。

android的keyboardview的屬性中是有keybackground 的,但是在使用的時候,卻發現沒有生效。仔細看了下源碼才發現。下面的這句話,把屬性集合給設定成了空。所以就鍵盤的屬性就一直無法生效。

KeyboardView mKeyboardView = new KeyboardView(this, null);  

悲劇發生了。就要想解決辦法。這裡既然知道是屬性集合被置空了。那麼就設定屬性集合被。查閱api發現。方法挺多的。就選用了其中一種方法。

    XmlPullParser parser =activity.getResources().getXml(R.layout.keyboardview);         AttributeSet attributes = Xml.asAttributeSet(parser);                  int type;          try{              while ((type = parser.next()) != XmlPullParser.START_TAG &&                      type != XmlPullParser.END_DOCUMENT) {                  // Empty              }              if (type != XmlPullParser.START_TAG) {                  Log.e("","the xml file is error!\n");              }             } catch (XmlPullParserException e) {              // TODO Auto-generated catch block              e.printStackTrace();          } catch (IOException e) {              // TODO Auto-generated catch block              e.printStackTrace();          }          Log.d("",""+parser.getAttributeCount());          KeyboardView mKeyboardView = new KeyboardView(this, attributes);        mKeyboardView.setFocusable(true);        mKeyboardView.setFocusableInTouchMode(true);        mKeyboardView.setId(R.id.keyboard_view);        mKeyboardView.setVisibility(View.GONE);        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,                RelativeLayout.LayoutParams.MATCH_PARENT);        lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);        RelativeLayout rlyt = new RelativeLayout(this);        rlyt.addView(mKeyboardView, lp);
keyboardview.xml 中存放的是鍵盤keyboardview的屬性集合。在這個地方設定集合不怕不會生效的。
<?xml version="1.0" encoding="utf-8"?><android.inputmethodservice.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:layout_alignParentBottom="true"    android:background="@color/lightblack"    android:focusable="true"    android:focusableInTouchMode="true"    android:keyBackground="@drawable/btn_keyboard_key"    android:keyTextColor="@color/white"    android:visibility="gone" />

就是這樣的實現了鍵盤的自訂皮膚。

android 自訂鍵盤,代碼實現自訂屬性(自訂鍵盤背景,各個鍵的背景等)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.