{"id":29458,"date":"2024-11-25T10:31:11","date_gmt":"2024-11-25T02:31:11","guid":{"rendered":"https:\/\/fwq.ai\/blog\/29458\/"},"modified":"2024-11-25T10:31:11","modified_gmt":"2024-11-25T02:31:11","slug":"android-%e9%ab%98%e4%bb%bf%e5%be%ae%e4%bf%a1%e6%94%af%e4%bb%98%e6%95%b0%e5%ad%97%e9%94%ae%e7%9b%98%e5%8a%9f%e8%83%bd","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/29458\/","title":{"rendered":"Android \u9ad8\u4eff\u5fae\u4fe1\u652f\u4ed8\u6570\u5b57\u952e\u76d8\u529f\u80fd"},"content":{"rendered":"<p style=\"text-align: left\">\u73b0\u5728\u5f88\u591aapp\u7684\u652f\u4ed8\u3001\u8f93\u5165\u5bc6\u7801\u529f\u80fd\uff0c\u90fd\u662f\u4f7f\u7528\u81ea\u5b9a\u4e49\u6570\u5b57\u952e\u76d8\uff0c\u65b9\u4fbf\u5b9e\u7528\u3002\u4e0b\u9762\u672c\u6587\u7ed9\u5927\u5bb6\u5e26\u6765\u4e86 \u9ad8\u4eff\u5fae\u4fe1\u652f\u4ed8\u6570\u5b57\u952e\u76d8\u529f\u80fd\uff0c\u975e\u5e38\u4e0d\u9519\uff0c\u611f\u5174\u8da3\u7684\u670b\u53cb\u4e00\u8d77\u5b66\u4e60\u5427<\/p>\n<p style=\"text-align: left\">\u4e0b\u9762\u5e26\u7740\u5927\u5bb6\u5b66\u4e60\u4e0b\uff0c\u5982\u4f55\u9ad8\u4eff\u5fae\u4fe1\u7684\u6570\u5b57\u952e\u76d8\uff0c\u53ef\u4ee5\u62ff\u6765\u76f4\u63a5\u7528\u5728\u81ea\u8eab\u7684\u9879\u76ee\u4e2d\u3002<\/p>\n<p style=\"text-align: left\">\u5148\u770b\u4e0b\u6548\u679c\u56fe\uff1a<\/p>\n<p style=\"text-align: left\"><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/013\/f3e176e5975079c4da0a4dd5e3e61d9d-0.gif\" style=\"max-width:90%\" class=\"aligncenter\" title=\"Android \u9ad8\u4eff\u5fae\u4fe1\u652f\u4ed8\u6570\u5b57\u952e\u76d8\u529f\u80fd\u63d2\u56fe\" alt=\"Android \u9ad8\u4eff\u5fae\u4fe1\u652f\u4ed8\u6570\u5b57\u952e\u76d8\u529f\u80fd\u63d2\u56fe\" \/><\/p>\n<p style=\"text-align: left\"><strong>1. \u81ea\u5b9a\u4e49\u5e03\u5c40<\/strong><\/p>\n<pre>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;RelativeLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\nandroid:layout_width=\"match_parent\"\r\nandroid:layout_height=\"wrap_content\"&gt;\r\n&lt;!-- \u8f93\u5165\u952e\u76d8 --&gt;\r\n&lt;GridView\r\nandroid:id=\"@+id\/gv_keybord\"\r\nandroid:layout_width=\"match_parent\"\r\nandroid:layout_height=\"wrap_content\"\r\nandroid:layout_alignParentBottom=\"true\"\r\nandroid:background=\"#bdbdbd\"\r\nandroid:horizontalSpacing=\"1px\"\r\nandroid:numColumns=\"3\"\r\nandroid:verticalSpacing=\"1px\" \/&gt;\r\n&lt;View\r\nandroid:id=\"@+id\/line\"\r\nandroid:layout_width=\"match_parent\"\r\nandroid:layout_height=\"1px\"\r\nandroid:layout_above=\"@id\/gv_keybord\"\r\nandroid:background=\"#bdbdbd\" \/&gt;\r\n&lt;RelativeLayout\r\nandroid:id=\"@+id\/layoutBack\"\r\nandroid:layout_width=\"match_parent\"\r\nandroid:layout_height=\"wrap_content\"\r\nandroid:layout_above=\"@id\/line\"\r\nandroid:background=\"#f5f5f5\"\r\nandroid:padding=\"10dp\"&gt;\r\n&lt;ImageView\r\nandroid:id=\"@+id\/imgBack\"\r\nandroid:layout_width=\"wrap_content\"\r\nandroid:layout_height=\"wrap_content\"\r\nandroid:layout_centerInParent=\"true\"\r\nandroid:src=\"@mipmap\/keyboard_back_img\" \/&gt;\r\n&lt;\/RelativeLayout&gt;\r\n&lt;View\r\nandroid:layout_width=\"match_parent\"\r\nandroid:layout_height=\"1px\"\r\nandroid:layout_above=\"@id\/layoutBack\"\r\nandroid:layout_marginTop=\"1dp\"\r\nandroid:background=\"#bdbdbd\" \/&gt;\r\n&lt;\/RelativeLayout&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p style=\"text-align: left\">\u952e\u76d8\u7684\u5e03\u5c40\uff0c\u5b9e\u8d28\u5c31\u662f\u4e00\u4e2a4X3\u7f51\u683c\u5e03\u5c40\u7684GridView\u3002<\/p>\n<p style=\"text-align: left\"><strong>2.\u5b9e\u73b0\u6570\u5b57\u952e\u76d8\u5185\u5bb9<\/strong><\/p>\n<pre>import android.content.Context;\r\nimport android.util.AttributeSet;\r\nimport android.view.View;\r\nimport android.widget.GridView;\r\nimport android.widget.RelativeLayout;\r\nimport com.lnyp.pswkeyboard.R;\r\nimport com.lnyp.pswkeyboard.adapter.KeyBoardAdapter;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\/**\r\n* \u865a\u62df\u952e\u76d8\r\n*\/\r\npublic class VirtualKeyboardView extends RelativeLayout implements View.OnClickListener {\r\nContext context;\r\nprivate GridView gridView; \r\nprivate RelativeLayout layoutBack;\r\nprivate ArrayList&lt;Map&lt;String, String&gt;&gt; valueList; \r\npublic VirtualKeyboardView(Context context) {\r\nthis(context, null);\r\n}\r\npublic VirtualKeyboardView(Context context, AttributeSet attrs) {\r\nsuper(context, attrs);\r\nthis.context = context;\r\nView view = View.inflate(context, R.layout.layout_virtual_keyboard, null);\r\nvalueList = new ArrayList&lt;&gt;();\r\nlayoutBack = (RelativeLayout) view.findViewById(R.id.layoutBack);\r\nlayoutBack.setOnClickListener(this);\r\ngridView = (GridView) view.findViewById(R.id.gv_keybord);\r\nsetView();\r\naddView(view); \r\n}\r\npublic RelativeLayout getLayoutBack() {\r\nreturn layoutBack;\r\n}\r\npublic ArrayList&lt;Map&lt;String, String&gt;&gt; getValueList() {\r\nreturn valueList;\r\n}\r\npublic GridView getGridView() {\r\nreturn gridView;\r\n}\r\nprivate void setView() {\r\n\/* \u521d\u59cb\u5316\u6309\u94ae\u4e0a\u5e94\u8be5\u663e\u793a\u7684\u6570\u5b57 *\/\r\nfor (int i = 1; i &lt; 13; i++) {\r\nMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();\r\nif (i &lt; 10) {\r\nmap.put(\"name\", String.valueOf(i));\r\n} else if (i == 10) {\r\nmap.put(\"name\", \".\");\r\n} else if (i == 11) {\r\nmap.put(\"name\", String.valueOf(0));\r\n} else if (i == 12) {\r\nmap.put(\"name\", \"\");\r\n}\r\nvalueList.add(map);\r\n}\r\nKeyBoardAdapter keyBoardAdapter = new KeyBoardAdapter(context, valueList);\r\ngridView.setAdapter(keyBoardAdapter);\r\n}\r\n@Override\r\npublic void onClick(View v) {\r\n}\r\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p style=\"text-align: left\">\u770b\u4e0b\u9002\u914d\u5668\u5982\u4f55\u5904\u7406\uff1aKeyBoardAdapter .java<\/p>\n<pre>import android.content.Context;\r\nimport android.graphics.Color;\r\nimport android.view.View;\r\nimport android.view.ViewGroup;\r\nimport android.widget.BaseAdapter;\r\nimport android.widget.RelativeLayout;\r\nimport android.widget.TextView;\r\nimport com.lnyp.pswkeyboard.R;\r\nimport java.util.ArrayList;\r\nimport java.util.Map;\r\n\/**\r\n* \u4e5d\u5bab\u683c\u952e\u76d8\u9002\u914d\u5668\r\n*\/\r\npublic class KeyBoardAdapter extends BaseAdapter {\r\nprivate Context mContext;\r\nprivate ArrayList&lt;Map&lt;String, String&gt;&gt; valueList;\r\npublic KeyBoardAdapter(Context mContext, ArrayList&lt;Map&lt;String, String&gt;&gt; valueList) {\r\nthis.mContext = mContext;\r\nthis.valueList = valueList;\r\n}\r\n@Override\r\npublic int getCount() {\r\nreturn valueList.size();\r\n}\r\n@Override\r\npublic Object getItem(int position) {\r\nreturn valueList.get(position);\r\n}\r\n@Override\r\npublic long getItemId(int position) {\r\nreturn position;\r\n}\r\n@Override\r\npublic View getView(int position, View convertView, ViewGroup parent) {\r\nViewHolder viewHolder;\r\nif (convertView == null) {\r\nconvertView = View.inflate(mContext, R.layout.grid_item_virtual_keyboard, null);\r\nviewHolder = new ViewHolder();\r\nviewHolder.btnKey = (TextView) convertView.findViewById(R.id.btn_keys);\r\nviewHolder.imgDelete = (RelativeLayout) convertView.findViewById(R.id.imgDelete);\r\nconvertView.setTag(viewHolder);\r\n} else {\r\nviewHolder = (ViewHolder) convertView.getTag();\r\n}\r\nif (position == 9) {\r\nviewHolder.imgDelete.setVisibility(View.INVISIBLE);\r\nviewHolder.btnKey.setVisibility(View.VISIBLE);\r\nviewHolder.btnKey.setText(valueList.get(position).get(\"name\"));\r\nviewHolder.btnKey.setBackgroundColor(Color.parseColor(\"#e0e0e0\"));\r\n} else if (position == 11) {\r\nviewHolder.btnKey.setBackgroundResource(R.mipmap.keyboard_delete_img);\r\nviewHolder.imgDelete.setVisibility(View.VISIBLE);\r\nviewHolder.btnKey.setVisibility(View.INVISIBLE);\r\n} else {\r\nviewHolder.imgDelete.setVisibility(View.INVISIBLE);\r\nviewHolder.btnKey.setVisibility(View.VISIBLE);\r\nviewHolder.btnKey.setText(valueList.get(position).get(\"name\"));\r\n}\r\nreturn convertView;\r\n}\r\n\/**\r\n* \u5b58\u653e\u63a7\u4ef6\r\n*\/\r\npublic final class ViewHolder {\r\npublic TextView btnKey;\r\npublic RelativeLayout imgDelete;\r\n}\r\n}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p style=\"text-align: left\">\u5728\u770bAdapter\u4e4b\u524d\uff0c\u6211\u4eec\u5148\u770b\u4e0bgrid_item_virtual_keyboard\u662f\u5982\u4f55\u5b9e\u73b0\u7684\uff1a<\/p>\n<pre>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;RelativeLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\nandroid:layout_width=\"match_parent\"\r\nandroid:layout_height=\"match_parent\"\r\nandroid:background=\"#e0e0e0\"&gt;\r\n&lt;TextView\r\nandroid:id=\"@+id\/btn_keys\"\r\nandroid:layout_width=\"match_parent\"\r\nandroid:layout_height=\"60dp\"\r\nandroid:layout_centerInParent=\"true\"\r\nandroid:background=\"@drawable\/selector_gird_item\"\r\nandroid:gravity=\"center\"\r\nandroid:includeFontPadding=\"false\"\r\nandroid:textColor=\"#333333\"\r\nandroid:textSize=\"26sp\" \/&gt;\r\n&lt;RelativeLayout\r\nandroid:id=\"@+id\/imgDelete\"\r\nandroid:layout_width=\"wrap_content\"\r\nandroid:layout_height=\"60dp\"\r\nandroid:layout_centerInParent=\"true\"&gt;\r\n&lt;ImageView\r\nandroid:layout_width=\"wrap_content\"\r\nandroid:layout_height=\"wrap_content\"\r\nandroid:layout_centerInParent=\"true\"\r\nandroid:src=\"@mipmap\/keyboard_delete_img\" \/&gt;\r\n&lt;\/RelativeLayout&gt;\r\n&lt;\/RelativeLayout&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p style=\"text-align: left\">\u53ef\u4ee5\u770b\u5230\uff0c\u6211\u4eec\u5728item\u5e03\u5c40\u6587\u4ef6\u4e2d\uff0c\u6307\u5b9a\u4e86\u4e24\u4e2aview\uff0c\u4e00\u4e2a\u662f\u666e\u901a\u663e\u793a\u6570\u5b57\u7684TextView\uff0c \u4e00\u4e2a\u662f\u663e\u793a\u6700\u540e\u5220\u9664\u952e\u7684RelativeLayout\u3002 <br \/>\u7136\u540e\uff0c\u5728KeyBoardAdapter \u7684getView\u65b9\u6cd5\u4e2d\uff0c\u6211\u4eec\u6839\u636eposition\u4f4d\u7f6e\uff0c\u5bf9\u5e03\u5c40\u8fdb\u884c\u4e0d\u540c\u7684\u5904\u7406\u3002\u5f53position\u4e3a9\uff0c\u4e5f\u5c31\u662f\u5012\u6570\u7b2c\u4e09\u4e2a\u6309\u952e\uff0c\u5b83\u7684\u6309\u94ae\u989c\u8272\u8981\u5355\u72ec\u8bbe\u7f6e\u3002 \u5f53position\u4e3a12\u4e5f\u5c31\u662f\u6700\u540e\u4e00\u4e2a\u6309\u94ae\u65f6\uff0c\u9700\u8981\u63a7\u5236\u5220\u9664\u6309\u94ae\u663e\u793a\uff0c\u6570\u5b57\u6309\u94ae\u9690\u85cf\u3002 \u5176\u4f59\u60c5\u51b5\u5219\u662f\u5220\u9664\u6309\u94ae\u9690\u85cf\uff0c\u6570\u5b57\u6309\u94ae\u663e\u793a\u3002<\/p>\n<p style=\"text-align: left\"><strong>3.\u4f7f\u7528\u5e76\u5b9e\u73b0\u952e\u76d8\u4e8b\u4ef6\u903b\u8f91<\/strong><\/p>\n<p style=\"text-align: left\">\u5e03\u5c40\u4e2d\uff0c\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\u81ea\u5df1\u5b9a\u4e49\u7684\u6570\u5b57\u952e\u76d8\uff1a<\/p>\n<pre>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;RelativeLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\nxmlns:tools=\"http:\/\/schemas.android.com\/tools\"\r\nandroid:layout_width=\"match_parent\"\r\nandroid:layout_height=\"match_parent\"\r\nandroid:background=\"#efefef\"\r\ntools:context=\"com.lnyp.pswkeyboard.NormalKeyBoardActivity\"&gt;\r\n&lt;EditText\r\nandroid:id=\"@+id\/textAmount\"\r\nandroid:layout_width=\"match_parent\"\r\nandroid:layout_height=\"50dp\"\r\nandroid:background=\"#FFFFFF\"\r\nandroid:inputType=\"numberDecimal\"\r\nandroid:padding=\"14dp\"\r\nandroid:textColor=\"#333333\"\r\nandroid:textSize=\"16sp\" \/&gt;\r\n&lt;com.lnyp.pswkeyboard.widget.VirtualKeyboardView\r\nandroid:id=\"@+id\/virtualKeyboardView\"\r\nandroid:layout_width=\"match_parent\"\r\nandroid:layout_height=\"wrap_content\"\r\nandroid:layout_gravity=\"bottom\" \/&gt;\r\n&lt;\/RelativeLayout&gt;<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p style=\"text-align: left\">\u6211\u4eec\u5728Activity\u4e2d\uff0c\u64cd\u4f5c\u6570\u5b57\u952e\u76d8\uff1a<\/p>\n<pre>import android.os.Bundle;\r\nimport android.support.v7.app.AppCompatActivity;\r\nimport android.text.Editable;\r\nimport android.view.View;\r\nimport android.view.animation.Animation;\r\nimport android.view.animation.AnimationUtils;\r\nimport android.widget.AdapterView;\r\nimport android.widget.EditText;\r\nimport android.widget.GridView;\r\nimport com.lnyp.pswkeyboard.widget.VirtualKeyboardView;\r\nimport java.util.ArrayList;\r\nimport java.util.Map;\r\npublic class NormalKeyBoardActivity extends AppCompatActivity {\r\nprivate VirtualKeyboardView virtualKeyboardView;\r\nprivate GridView gridView;\r\nprivate ArrayList&lt;Map&lt;String, String&gt;&gt; valueList;\r\nprivate EditText textAmount;\r\nprivate Animation enterAnim;\r\nprivate Animation exitAnim;\r\n@Override\r\nprotected void onCreate(Bundle savedInstanceState) {\r\nsuper.onCreate(savedInstanceState);\r\nsetContentView(R.layout.activity_normal_key_board);\r\nvalueList = virtualKeyboardView.getValueList();\r\ninitAnim();\r\ninitView();\r\n}\r\nprivate void initAnim() {\r\nenterAnim = AnimationUtils.loadAnimation(this, R.anim.push_bottom_in);\r\nexitAnim = AnimationUtils.loadAnimation(this, R.anim.push_bottom_out);\r\n}\r\nprivate void initView() {\r\nvirtualKeyboardView = (VirtualKeyboardView) findViewById(R.id.virtualKeyboardView);\r\ntextAmount = (EditText) findViewById(R.id.textAmount);\r\nvirtualKeyboardView.getLayoutBack().setOnClickListener(new View.OnClickListener() {\r\n@Override\r\npublic void onClick(View v) {\r\nvirtualKeyboardView.startAnimation(exitAnim);\r\nvirtualKeyboardView.setVisibility(View.GONE);\r\n}\r\n});\r\ngridView = virtualKeyboardView.getGridView();\r\ngridView.setOnItemClickListener(onItemClickListener);\r\ntextAmount.setOnClickListener(new View.OnClickListener() {\r\n@Override\r\npublic void onClick(View v) {\r\nvirtualKeyboardView.setFocusable(true);\r\nvirtualKeyboardView.setFocusableInTouchMode(true);\r\nvirtualKeyboardView.startAnimation(enterAnim);\r\nvirtualKeyboardView.setVisibility(View.VISIBLE);\r\n}\r\n});\r\n}\r\nprivate AdapterView.OnItemClickListener onItemClickListener = new AdapterView.OnItemClickListener() {\r\n@Override\r\npublic void onItemClick(AdapterView&lt;?&gt; adapterView, View view, int position, long l) {\r\nif (position &lt; 11 &amp;&amp; position != 9) { \/\/\u70b9\u51fb0~9\u6309\u94ae\r\nString amount = textAmount.getText().toString().trim();\r\namount = amount + valueList.get(position).get(\"name\");\r\ntextAmount.setText(amount);\r\nEditable ea = textAmount.getText();\r\ntextAmount.setSelection(ea.length());\r\n} else {\r\nif (position == 9) { \/\/\u70b9\u51fb\u9000\u683c\u952e\r\nString amount = textAmount.getText().toString().trim();\r\nif (!amount.contains(\".\")) {\r\namount = amount + valueList.get(position).get(\"name\");\r\ntextAmount.setText(amount);\r\nEditable ea = textAmount.getText();\r\ntextAmount.setSelection(ea.length());\r\n}\r\n}\r\nif (position == 11) { \/\/\u70b9\u51fb\u9000\u683c\u952e\r\nString amount = textAmount.getText().toString().trim();\r\nif (amount.length() &gt; 0) {\r\namount = amount.substring(0, amount.length() - 1);\r\ntextAmount.setText(amount);\r\nEditable ea = textAmount.getText();\r\ntextAmount.setSelection(ea.length());\r\n}\r\n}\r\n}\r\n}\r\n};}<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u4ee5\u4e0a\u5c31\u662fAndroid \u9ad8\u4eff\u5fae\u4fe1\u652f\u4ed8\u6570\u5b57\u952e\u76d8\u529f\u80fd\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u73b0\u5728\u5f88\u591aapp\u7684\u652f\u4ed8\u3001\u8f93\u5165\u5bc6\u7801\u529f\u80fd\uff0c\u90fd\u662f\u4f7f\u7528\u81ea\u5b9a\u4e49\u6570\u5b57\u952e\u76d8\uff0c\u65b9\u4fbf\u5b9e\u7528\u3002\u4e0b\u9762\u672c\u6587\u7ed9\u5927\u5bb6\u5e26\u6765\u4e86 \u9ad8\u4eff\u5fae\u4fe1\u652f\u4ed8\u6570\u5b57\u952e\u76d8\u529f\u80fd\uff0c\u975e\u5e38\u4e0d\u9519\uff0c\u611f\u5174\u8da3\u7684\u670b\u53cb\u4e00\u8d77\u5b66\u4e60\u5427 \u4e0b\u9762\u5e26\u7740\u5927\u5bb6\u5b66\u4e60\u4e0b\uff0c\u5982\u4f55\u9ad8\u4eff\u5fae\u4fe1\u7684\u6570\u5b57\u952e\u76d8\uff0c\u53ef\u4ee5\u62ff\u6765\u76f4\u63a5\u7528\u5728\u81ea\u8eab\u7684\u9879\u76ee\u4e2d\u3002 \u5148\u770b\u4e0b\u6548\u679c\u56fe\uff1a 1. \u81ea\u5b9a\u4e49\u5e03\u5c40 &lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt; &lt;RelativeLayout xmlns:android=&#8221;http:\/\/schemas.android.com\/apk\/res\/android&#8221; android:layout_width=&#8221;match_parent&#8221; android:layout_height=&#8221;wrap_content&#8221;&gt; &lt;!&#8211; \u8f93\u5165\u952e\u76d8 &#8211;&gt; &lt;GridView android:id=&#8221;@+id\/gv_keybord&#8221; android:layout_width=&#8221;match_parent&#8221; android:layout_height=&#8221;wrap_content&#8221; android:layout_alignParentBottom=&#8221;true&#8221; android:background=&#8221;#bdbdbd&#8221; android:horizontalSpacing=&#8221;1px&#8221; android:numColumns=&#8221;3&#8243; android:verticalSpacing=&#8221;1px&#8221; \/&gt; &lt;View android:id=&#8221;@+id\/line&#8221; android:layout_width=&#8221;match_parent&#8221; android:layout_height=&#8221;1px&#8221; android:layout_above=&#8221;@id\/gv_keybord&#8221; android:background=&#8221;#bdbdbd&#8221; \/&gt; &lt;RelativeLayout android:id=&#8221;@+id\/layoutBack&#8221; android:layout_width=&#8221;match_parent&#8221; android:layout_height=&#8221;wrap_content&#8221; android:layout_above=&#8221;@id\/line&#8221; android:background=&#8221;#f5f5f5&#8243; android:padding=&#8221;10dp&#8221;&gt; &lt;ImageView android:id=&#8221;@+id\/imgBack&#8221; android:layout_width=&#8221;wrap_content&#8221; android:layout_height=&#8221;wrap_content&#8221; android:layout_centerInParent=&#8221;true&#8221; android:src=&#8221;@mipmap\/keyboard_back_img&#8221; \/&gt; &lt;\/RelativeLayout&gt; &lt;View android:layout_width=&#8221;match_parent&#8221; android:layout_height=&#8221;1px&#8221; android:layout_above=&#8221;@id\/layoutBack&#8221; android:layout_marginTop=&#8221;1dp&#8221; android:background=&#8221;#bdbdbd&#8221; \/&gt; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-29458","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29458","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=29458"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29458\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=29458"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=29458"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=29458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}