Add horizontal edges paddings to phone/number layout

Bug: 4948171
Change-Id: I8a06a25ffcbd141c9418e77e982233166a347914
main
Tadashi G. Takaoka 2011-09-26 11:26:38 +09:00
parent acf6b6815a
commit 287f4f83e9
19 changed files with 505 additions and 316 deletions

View File

@ -25,7 +25,6 @@
<!-- key_height + key_bottom_gap = popup_key_height --> <!-- key_height + key_bottom_gap = popup_key_height -->
<!-- <dimen name="key_height">0.260in</dimen>--> <!-- <dimen name="key_height">0.260in</dimen>-->
<dimen name="popup_key_height">0.280in</dimen> <dimen name="popup_key_height">0.280in</dimen>
<dimen name="keyboard_horizontal_edges_padding">0.0in</dimen>
<fraction name="keyboard_top_padding">1.818%p</fraction> <fraction name="keyboard_top_padding">1.818%p</fraction>
<fraction name="keyboard_bottom_padding">0.0%p</fraction> <fraction name="keyboard_bottom_padding">0.0%p</fraction>

View File

@ -23,7 +23,6 @@
<dimen name="keyboardHeight">45.0mm</dimen> <dimen name="keyboardHeight">45.0mm</dimen>
<fraction name="minKeyboardHeight">45%p</fraction> <fraction name="minKeyboardHeight">45%p</fraction>
<dimen name="keyboard_horizontal_edges_padding">0dp</dimen>
<fraction name="keyboard_top_padding">2.444%p</fraction> <fraction name="keyboard_top_padding">2.444%p</fraction>
<fraction name="keyboard_bottom_padding">0.0%p</fraction> <fraction name="keyboard_bottom_padding">0.0%p</fraction>
<fraction name="key_bottom_gap">4.911%p</fraction> <fraction name="key_bottom_gap">4.911%p</fraction>

View File

@ -26,7 +26,6 @@
<dimen name="popup_key_height">10.0mm</dimen> <dimen name="popup_key_height">10.0mm</dimen>
<dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
<fraction name="keyboard_top_padding">2.291%p</fraction> <fraction name="keyboard_top_padding">2.291%p</fraction>
<fraction name="keyboard_bottom_padding">0.0%p</fraction> <fraction name="keyboard_bottom_padding">0.0%p</fraction>
<fraction name="key_bottom_gap">3.750%p</fraction> <fraction name="key_bottom_gap">3.750%p</fraction>

View File

@ -23,7 +23,6 @@
<dimen name="keyboardHeight">58.0mm</dimen> <dimen name="keyboardHeight">58.0mm</dimen>
<fraction name="minKeyboardHeight">45%p</fraction> <fraction name="minKeyboardHeight">45%p</fraction>
<dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
<fraction name="keyboard_top_padding">1.896%p</fraction> <fraction name="keyboard_top_padding">1.896%p</fraction>
<fraction name="keyboard_bottom_padding">0.0%p</fraction> <fraction name="keyboard_bottom_padding">0.0%p</fraction>

View File

@ -24,7 +24,6 @@
<fraction name="maxKeyboardHeight">50%p</fraction> <fraction name="maxKeyboardHeight">50%p</fraction>
<fraction name="minKeyboardHeight">-35.0%p</fraction> <fraction name="minKeyboardHeight">-35.0%p</fraction>
<dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
<fraction name="keyboard_top_padding">2.291%p</fraction> <fraction name="keyboard_top_padding">2.291%p</fraction>
<fraction name="keyboard_bottom_padding">0.0%p</fraction> <fraction name="keyboard_bottom_padding">0.0%p</fraction>

View File

@ -144,19 +144,10 @@
<!-- Minimum keyboard height represented in pixels, percentage of display height if fraction <!-- Minimum keyboard height represented in pixels, percentage of display height if fraction
is positive, or percentage of display width if fraction is negative. --> is positive, or percentage of display width if fraction is negative. -->
<attr name="minKeyboardHeight" format="dimension|fraction" /> <attr name="minKeyboardHeight" format="dimension|fraction" />
<!-- Keyboard top and bottom paddings. --> <!-- Keyboard top, bottom, both horizontal edges paddings. -->
<attr name="keyboardTopPadding" format="dimension|fraction" /> <attr name="keyboardTopPadding" format="dimension|fraction" />
<attr name="keyboardBottomPadding" format="dimension|fraction" /> <attr name="keyboardBottomPadding" format="dimension|fraction" />
<!-- Default width of a key, in pixels or percentage of display width. <attr name="keyboardHorizontalEdgesPadding" format="dimension|fraction" />
If the value is zero, the actual key width will be determined to fill out the area up
to the right edge of the keyboard.
If the value is negative, the actual key width will be determined to fill out the
area between the nearest key on the left hand side and the right edge of the keyboard.
-->
<attr name="keyWidth" format="dimension|fraction|enum">
<enum name="fillRight" value="-1" />
<enum name="fillBoth" value="-2" />
</attr>
<!-- Default height of a row (key height + vertical gap), in pixels or percentage of <!-- Default height of a row (key height + vertical gap), in pixels or percentage of
keyboard height. --> keyboard height. -->
<attr name="rowHeight" format="dimension|fraction" /> <attr name="rowHeight" format="dimension|fraction" />
@ -258,6 +249,17 @@
<!-- Visual insets --> <!-- Visual insets -->
<attr name="visualInsetsLeft" format="dimension|fraction" /> <attr name="visualInsetsLeft" format="dimension|fraction" />
<attr name="visualInsetsRight" format="dimension|fraction" /> <attr name="visualInsetsRight" format="dimension|fraction" />
<!-- Width of the key, in pixels or percentage of display width.
If the value is fillRight, the actual key width will be determined to fill out the area
up to the right edge of the keyboard.
If the value is fillBoth, the actual key width will be determined to fill out the
area between the nearest key on the left hand side and the right edge of the keyboard.
-->
<!-- This should be aligned with KeyboardBuilder.Row.KEYWIDTH_* -->
<attr name="keyWidth" format="dimension|fraction|enum">
<enum name="fillRight" value="-1" />
<enum name="fillBoth" value="-2" />
</attr>
<!-- The X-coordinate of upper right corner of this key including horizontal gap. <!-- The X-coordinate of upper right corner of this key including horizontal gap.
If the value is negative, the origin is the right edge of the keyboard. --> If the value is negative, the origin is the right edge of the keyboard. -->
<attr name="keyXPos" format="dimension|fraction" /> <attr name="keyXPos" format="dimension|fraction" />

View File

@ -29,9 +29,9 @@
<dimen name="mini_keyboard_horizontal_edges_padding">16dip</dimen> <dimen name="mini_keyboard_horizontal_edges_padding">16dip</dimen>
<dimen name="mini_keyboard_key_horizontal_padding">8dip</dimen> <dimen name="mini_keyboard_key_horizontal_padding">8dip</dimen>
<dimen name="keyboard_horizontal_edges_padding">0dp</dimen>
<fraction name="keyboard_top_padding">1.556%p</fraction> <fraction name="keyboard_top_padding">1.556%p</fraction>
<fraction name="keyboard_bottom_padding">4.669%p</fraction> <fraction name="keyboard_bottom_padding">4.669%p</fraction>
<fraction name="keyboard_horizontal_edges_padding">0%p</fraction>
<fraction name="key_bottom_gap">6.250%p</fraction> <fraction name="key_bottom_gap">6.250%p</fraction>
<fraction name="key_horizontal_gap">1.352%p</fraction> <fraction name="key_horizontal_gap">1.352%p</fraction>

View File

@ -24,6 +24,7 @@
<item name="moreKeysTemplate">@xml/kbd_mini_keyboard_template</item> <item name="moreKeysTemplate">@xml/kbd_mini_keyboard_template</item>
<item name="keyboardTopPadding">@fraction/keyboard_top_padding</item> <item name="keyboardTopPadding">@fraction/keyboard_top_padding</item>
<item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding</item> <item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding</item>
<item name="keyboardHorizontalEdgesPadding">@fraction/keyboard_horizontal_edges_padding</item>
<item name="horizontalGap">@fraction/key_horizontal_gap</item> <item name="horizontalGap">@fraction/key_horizontal_gap</item>
<item name="verticalGap">@fraction/key_bottom_gap</item> <item name="verticalGap">@fraction/key_bottom_gap</item>
<item name="maxMoreKeysColumn">@integer/config_max_more_keys_column</item> <item name="maxMoreKeysColumn">@integer/config_max_more_keys_column</item>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2011, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHorizontalEdgesPadding="10%p"
latin:keyWidth="26.67%p"
>
<include
latin:keyboardLayout="@xml/kbd_rows_number" />
</Keyboard>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2011, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHorizontalEdgesPadding="10%p"
latin:keyWidth="26.67%p"
>
<include
latin:keyboardLayout="@xml/kbd_rows_phone" />
</Keyboard>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2008, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHorizontalEdgesPadding="10%p"
latin:keyWidth="26.67%p"
>
<include
latin:keyboardLayout="@xml/kbd_rows_phone_shift" />
</Keyboard>

View File

@ -23,109 +23,5 @@
latin:keyWidth="26.67%p" latin:keyWidth="26.67%p"
> >
<include <include
latin:keyboardLayout="@xml/kbd_key_styles" /> latin:keyboardLayout="@xml/kbd_rows_number" />
<include
latin:keyboardLayout="@xml/kbd_numkey_styles" />
<switch>
<case
latin:passwordInput="true"
>
<Row>
<Key
latin:keyStyle="num1KeyStyle" />
<Key
latin:keyStyle="num2KeyStyle" />
<Key
latin:keyStyle="num3KeyStyle" />
</Row>
<Row>
<Key
latin:keyStyle="num4KeyStyle" />
<Key
latin:keyStyle="num5KeyStyle" />
<Key
latin:keyStyle="num6KeyStyle" />
</Row>
<Row>
<Key
latin:keyStyle="num7KeyStyle" />
<Key
latin:keyStyle="num8KeyStyle" />
<Key
latin:keyStyle="num9KeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Spacer />
<Key
latin:keyStyle="num0KeyStyle" />
<Spacer />
<Key
latin:keyStyle="returnKeyStyle"
latin:keyWidth="fillRight" />
</Row>
</case>
<!-- latin:passwordInput="false" -->
<default>
<Row>
<Key
latin:keyLabel="1"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="2"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="3"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="-"
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyLabel="4"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="5"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="6"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel=","
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyLabel="7"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="8"
latin:keyStyle="numKeyStyle"/>
<Key
latin:keyLabel="9"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="numSpaceKeyStyle" />
<Key
latin:keyLabel="0"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="."
latin:keyStyle="numKeyStyle" />
<Key
latin:keyStyle="returnKeyStyle"
latin:keyWidth="fillRight" />
</Row>
</default>
</switch>
</Keyboard> </Keyboard>

View File

@ -23,53 +23,5 @@
latin:keyWidth="26.67%p" latin:keyWidth="26.67%p"
> >
<include <include
latin:keyboardLayout="@xml/kbd_key_styles" /> latin:keyboardLayout="@xml/kbd_rows_phone" />
<include
latin:keyboardLayout="@xml/kbd_numkey_styles" />
<Row>
<Key
latin:keyStyle="num1KeyStyle" />
<Key
latin:keyStyle="num2KeyStyle" />
<Key
latin:keyStyle="num3KeyStyle" />
<Key
latin:keyLabel="-"
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="num4KeyStyle" />
<Key
latin:keyStyle="num5KeyStyle" />
<Key
latin:keyStyle="num6KeyStyle" />
<Key
latin:keyLabel="."
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="num7KeyStyle" />
<Key
latin:keyStyle="num8KeyStyle" />
<Key
latin:keyStyle="num9KeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="numSwitchToAltKeyStyle" />
<Key
latin:keyStyle="num0KeyStyle" />
<Key
latin:keyStyle="numSpaceKeyStyle" />
<Key
latin:keyStyle="returnKeyStyle"
latin:keyWidth="fillRight" />
</Row>
</Keyboard> </Keyboard>

View File

@ -23,66 +23,5 @@
latin:keyWidth="26.67%p" latin:keyWidth="26.67%p"
> >
<include <include
latin:keyboardLayout="@xml/kbd_key_styles" /> latin:keyboardLayout="@xml/kbd_rows_phone_shift" />
<include
latin:keyboardLayout="@xml/kbd_numkey_styles" />
<Row>
<Key
latin:keyLabel="("
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="/"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel=")"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="-"
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyLabel="N" />
<!-- Pause is a comma. Check PhoneNumberUtils.java to see if this
has changed. -->
<Key
latin:code="44"
latin:keyLabel="@string/label_pause_key"
latin:keyLabelOption="followKeyHintLabelRatio|autoXScale" />
<Key
latin:keyLabel=","
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="."
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="numStarKeyStyle" />
<!-- Wait is a semicolon. -->
<Key
latin:code="59"
latin:keyLabel="@string/label_wait_key"
latin:keyLabelOption="followKeyHintLabelRatio|autoXScale" />
<Key
latin:keyLabel="#"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="numSwitchToNumericKeyStyle" />
<Key
latin:keyLabel="+"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyStyle="numSpaceKeyStyle" />
<Key
latin:keyStyle="returnKeyStyle"
latin:keyWidth="fillRight" />
</Row>
</Keyboard> </Keyboard>

View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2011, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<include
latin:keyboardLayout="@xml/kbd_numkey_styles" />
<switch>
<case
latin:passwordInput="true"
>
<Row>
<Key
latin:keyStyle="num1KeyStyle" />
<Key
latin:keyStyle="num2KeyStyle" />
<Key
latin:keyStyle="num3KeyStyle" />
</Row>
<Row>
<Key
latin:keyStyle="num4KeyStyle" />
<Key
latin:keyStyle="num5KeyStyle" />
<Key
latin:keyStyle="num6KeyStyle" />
</Row>
<Row>
<Key
latin:keyStyle="num7KeyStyle" />
<Key
latin:keyStyle="num8KeyStyle" />
<Key
latin:keyStyle="num9KeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Spacer />
<Key
latin:keyStyle="num0KeyStyle" />
<Spacer />
<Key
latin:keyStyle="returnKeyStyle"
latin:keyWidth="fillRight" />
</Row>
</case>
<!-- latin:passwordInput="false" -->
<default>
<Row>
<Key
latin:keyLabel="1"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="2"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="3"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="-"
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyLabel="4"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="5"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="6"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel=","
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyLabel="7"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="8"
latin:keyStyle="numKeyStyle"/>
<Key
latin:keyLabel="9"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="numSpaceKeyStyle" />
<Key
latin:keyLabel="0"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="."
latin:keyStyle="numKeyStyle" />
<Key
latin:keyStyle="returnKeyStyle"
latin:keyWidth="fillRight" />
</Row>
</default>
</switch>
</merge>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2011, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<include
latin:keyboardLayout="@xml/kbd_numkey_styles" />
<Row>
<Key
latin:keyStyle="num1KeyStyle" />
<Key
latin:keyStyle="num2KeyStyle" />
<Key
latin:keyStyle="num3KeyStyle" />
<Key
latin:keyLabel="-"
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="num4KeyStyle" />
<Key
latin:keyStyle="num5KeyStyle" />
<Key
latin:keyStyle="num6KeyStyle" />
<Key
latin:keyLabel="."
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="num7KeyStyle" />
<Key
latin:keyStyle="num8KeyStyle" />
<Key
latin:keyStyle="num9KeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="numSwitchToAltKeyStyle" />
<Key
latin:keyStyle="num0KeyStyle" />
<Key
latin:keyStyle="numSpaceKeyStyle" />
<Key
latin:keyStyle="returnKeyStyle"
latin:keyWidth="fillRight" />
</Row>
</merge>

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2011, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<include
latin:keyboardLayout="@xml/kbd_key_styles" />
<include
latin:keyboardLayout="@xml/kbd_numkey_styles" />
<Row>
<Key
latin:keyLabel="("
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="/"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel=")"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="-"
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyLabel="N" />
<!-- Pause is a comma. Check PhoneNumberUtils.java to see if this
has changed. -->
<Key
latin:code="44"
latin:keyLabel="@string/label_pause_key"
latin:keyLabelOption="followKeyHintLabelRatio|autoXScale" />
<Key
latin:keyLabel=","
latin:keyStyle="numKeyStyle" />
<Key
latin:keyLabel="."
latin:keyStyle="numFunctionalKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="numStarKeyStyle" />
<!-- Wait is a semicolon. -->
<Key
latin:code="59"
latin:keyLabel="@string/label_wait_key"
latin:keyLabelOption="followKeyHintLabelRatio|autoXScale" />
<Key
latin:keyLabel="#"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
latin:keyStyle="numSwitchToNumericKeyStyle" />
<Key
latin:keyLabel="+"
latin:keyStyle="numKeyStyle" />
<Key
latin:keyStyle="numSpaceKeyStyle" />
<Key
latin:keyStyle="returnKeyStyle"
latin:keyWidth="fillRight" />
</Row>
</merge>

View File

@ -120,11 +120,6 @@ public class Key {
/** Whether this key needs to show the "..." popup hint for special purposes */ /** Whether this key needs to show the "..." popup hint for special purposes */
private boolean mNeedsSpecialPopupHint; private boolean mNeedsSpecialPopupHint;
// keyWidth enum constants
private static final int KEYWIDTH_NOT_ENUM = 0;
private static final int KEYWIDTH_FILL_RIGHT = -1;
private static final int KEYWIDTH_FILL_BOTH = -2;
// RTL parenthesis character swapping map. // RTL parenthesis character swapping map.
private static final Map<Integer, Integer> sRtlParenthesisMap = new HashMap<Integer, Integer>(); private static final Map<Integer, Integer> sRtlParenthesisMap = new HashMap<Integer, Integer>();
@ -216,21 +211,9 @@ public class Key {
*/ */
public Key(Resources res, KeyboardParams params, KeyboardBuilder.Row row, public Key(Resources res, KeyboardParams params, KeyboardBuilder.Row row,
XmlResourceParser parser, KeyStyles keyStyles) { XmlResourceParser parser, KeyStyles keyStyles) {
final TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser), final float horizontalGap = isSpacer() ? 0 : params.mHorizontalGap;
R.styleable.Keyboard);
mHeight = (int)KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_rowHeight, params.mBaseHeight, row.mRowHeight)
- params.mVerticalGap;
final float horizontalGap = isSpacer() ? 0
: KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_horizontalGap, params.mBaseWidth,
params.mHorizontalGap);
mVerticalGap = params.mVerticalGap; mVerticalGap = params.mVerticalGap;
final int widthType = KeyboardBuilder.getEnumValue(keyboardAttr, mHeight = row.mRowHeight - mVerticalGap;
R.styleable.Keyboard_keyWidth, KEYWIDTH_NOT_ENUM);
float keyWidth = KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_keyWidth, params.mBaseWidth, row.mDefaultKeyWidth);
keyboardAttr.recycle();
final TypedArray keyAttr = res.obtainAttributes(Xml.asAttributeSet(parser), final TypedArray keyAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.Keyboard_Key); R.styleable.Keyboard_Key);
@ -245,38 +228,16 @@ public class Key {
style = keyStyles.getEmptyKeyStyle(); style = keyStyles.getEmptyKeyStyle();
} }
final int keyboardWidth = params.mOccupiedWidth; final float keyXPos = row.getKeyX(keyAttr);
final float x = row.mCurrentX; final float keyWidth = row.getKeyWidth(keyAttr, keyXPos);
float keyXPos = KeyboardBuilder.getDimensionOrFraction(keyAttr,
R.styleable.Keyboard_Key_keyXPos, keyboardWidth, x);
if (keyXPos < 0) {
// If keyXPos is negative, the actual x-coordinate will be keyboardWidth + keyXPos.
keyXPos += keyboardWidth;
if (keyXPos < x) {
// keyXPos shouldn't be less than x because drawable area for this key starts
// at x. Or, this key will overlaps the adjacent key on its left hand side.
keyXPos = x;
}
}
if (widthType == KEYWIDTH_FILL_RIGHT) {
// If keyWidth is zero, the actual key width will be determined to fill out the
// area up to the right edge of the keyboard.
keyWidth = keyboardWidth - keyXPos;
} else if (widthType == KEYWIDTH_FILL_BOTH) {
// If keyWidth is negative, the actual key width will be determined to fill out the
// area between the nearest key on the left hand side and the right edge of the
// keyboard.
keyXPos = x;
keyWidth = keyboardWidth - keyXPos;
}
// Horizontal gap is divided equally to both sides of the key. // Horizontal gap is divided equally to both sides of the key.
mX = (int) (keyXPos + horizontalGap / 2); mX = (int) (keyXPos + horizontalGap / 2);
mY = row.mCurrentY; mY = row.getKeyY();
mWidth = (int) (keyWidth - horizontalGap); mWidth = (int) (keyWidth - horizontalGap);
mHorizontalGap = (int) horizontalGap; mHorizontalGap = (int) horizontalGap;
// Update row to have current x coordinate. // Update row to have current x coordinate.
row.mCurrentX = keyXPos + keyWidth; row.setXPos(keyXPos + keyWidth);
final CharSequence[] moreKeys = style.getTextArray(keyAttr, final CharSequence[] moreKeys = style.getTextArray(keyAttr,
R.styleable.Keyboard_Key_moreKeys); R.styleable.Keyboard_Key_moreKeys);
@ -288,20 +249,20 @@ public class Key {
} else { } else {
mMoreKeys = moreKeys; mMoreKeys = moreKeys;
} }
mMaxMoreKeysColumn = style.getInt(keyboardAttr, R.styleable.Keyboard_Key_maxMoreKeysColumn, mMaxMoreKeysColumn = style.getInt(keyAttr,
params.mMaxMiniKeyboardColumn); R.styleable.Keyboard_Key_maxMoreKeysColumn, params.mMaxMiniKeyboardColumn);
mBackgroundType = style.getInt( mBackgroundType = style.getInt(keyAttr,
keyAttr, R.styleable.Keyboard_Key_backgroundType, BACKGROUND_TYPE_NORMAL); R.styleable.Keyboard_Key_backgroundType, BACKGROUND_TYPE_NORMAL);
mRepeatable = style.getBoolean(keyAttr, R.styleable.Keyboard_Key_isRepeatable, false); mRepeatable = style.getBoolean(keyAttr, R.styleable.Keyboard_Key_isRepeatable, false);
mEnabled = style.getBoolean(keyAttr, R.styleable.Keyboard_Key_enabled, true); mEnabled = style.getBoolean(keyAttr, R.styleable.Keyboard_Key_enabled, true);
mEdgeFlags = 0; mEdgeFlags = 0;
final KeyboardIconsSet iconsSet = params.mIconsSet; final KeyboardIconsSet iconsSet = params.mIconsSet;
mVisualInsetsLeft = (int) KeyboardBuilder.getDimensionOrFraction(keyAttr, mVisualInsetsLeft = (int) KeyboardBuilder.getDimensionOrFraction(keyAttr,
R.styleable.Keyboard_Key_visualInsetsLeft, keyboardWidth, 0); R.styleable.Keyboard_Key_visualInsetsLeft, params.mBaseWidth, 0);
mVisualInsetsRight = (int) KeyboardBuilder.getDimensionOrFraction(keyAttr, mVisualInsetsRight = (int) KeyboardBuilder.getDimensionOrFraction(keyAttr,
R.styleable.Keyboard_Key_visualInsetsRight, keyboardWidth, 0); R.styleable.Keyboard_Key_visualInsetsRight, params.mBaseWidth, 0);
mPreviewIcon = iconsSet.getIcon(style.getInt(keyAttr, mPreviewIcon = iconsSet.getIcon(style.getInt(keyAttr,
R.styleable.Keyboard_Key_keyIconPreview, KeyboardIconsSet.ICON_UNDEFINED)); R.styleable.Keyboard_Key_keyIconPreview, KeyboardIconsSet.ICON_UNDEFINED));
mIcon = iconsSet.getIcon(style.getInt(keyAttr, R.styleable.Keyboard_Key_keyIcon, mIcon = iconsSet.getIcon(style.getInt(keyAttr, R.styleable.Keyboard_Key_keyIcon,

View File

@ -144,27 +144,96 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
* defines. * defines.
*/ */
public static class Row { public static class Row {
// keyWidth enum constants
private static final int KEYWIDTH_NOT_ENUM = 0;
private static final int KEYWIDTH_FILL_RIGHT = -1;
private static final int KEYWIDTH_FILL_BOTH = -2;
private final KeyboardParams mParams;
/** Default width of a key in this row. */ /** Default width of a key in this row. */
public final float mDefaultKeyWidth; public final float mDefaultKeyWidth;
/** Default height of a key in this row. */ /** Default height of a key in this row. */
public final int mRowHeight; public final int mRowHeight;
public final int mCurrentY; private final int mCurrentY;
// Will be updated by {@link Key}'s constructor. // Will be updated by {@link Key}'s constructor.
public float mCurrentX; private float mCurrentX;
public Row(Resources res, KeyboardParams params, XmlResourceParser parser, int y) { public Row(Resources res, KeyboardParams params, XmlResourceParser parser, int y) {
TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), mParams = params;
TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.Keyboard); R.styleable.Keyboard);
mDefaultKeyWidth = KeyboardBuilder.getDimensionOrFraction(a, mRowHeight = (int)KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_keyWidth, params.mBaseWidth, params.mDefaultKeyWidth);
mRowHeight = (int)KeyboardBuilder.getDimensionOrFraction(a,
R.styleable.Keyboard_rowHeight, params.mBaseHeight, params.mDefaultRowHeight); R.styleable.Keyboard_rowHeight, params.mBaseHeight, params.mDefaultRowHeight);
a.recycle(); keyboardAttr.recycle();
TypedArray keyAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.Keyboard_Key);
mDefaultKeyWidth = KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_Key_keyWidth, params.mBaseWidth, params.mDefaultKeyWidth);
keyAttr.recycle();
mCurrentY = y; mCurrentY = y;
mCurrentX = 0.0f; mCurrentX = 0.0f;
} }
public void setXPos(float keyXPos) {
mCurrentX = keyXPos;
}
public void advanceXPos(float width) {
mCurrentX += width;
}
public int getKeyY() {
return mCurrentY;
}
public float getKeyX(TypedArray keyAttr) {
final int widthType = KeyboardBuilder.getEnumValue(keyAttr,
R.styleable.Keyboard_Key_keyWidth, KEYWIDTH_NOT_ENUM);
if (widthType == KEYWIDTH_FILL_BOTH) {
// If keyWidth is fillBoth, the key width should start right after the nearest key
// on the left hand side.
return mCurrentX;
}
final int keyboardRightEdge = mParams.mOccupiedWidth - mParams.mHorizontalEdgesPadding;
if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyXPos)) {
final float keyXPos = KeyboardBuilder.getDimensionOrFraction(keyAttr,
R.styleable.Keyboard_Key_keyXPos, mParams.mBaseWidth, 0);
if (keyXPos < 0) {
// If keyXPos is negative, the actual x-coordinate will be
// keyboardWidth + keyXPos.
// keyXPos shouldn't be less than mCurrentX because drawable area for this key
// starts at mCurrentX. Or, this key will overlaps the adjacent key on its left
// hand side.
return Math.max(keyXPos + keyboardRightEdge, mCurrentX);
} else {
return keyXPos + mParams.mHorizontalEdgesPadding;
}
}
return mCurrentX;
}
public float getKeyWidth(TypedArray keyAttr, float keyXPos) {
final int widthType = KeyboardBuilder.getEnumValue(keyAttr,
R.styleable.Keyboard_Key_keyWidth, KEYWIDTH_NOT_ENUM);
switch (widthType) {
case KEYWIDTH_FILL_RIGHT:
case KEYWIDTH_FILL_BOTH:
final int keyboardRightEdge =
mParams.mOccupiedWidth - mParams.mHorizontalEdgesPadding;
// If keyWidth is fillRight, the actual key width will be determined to fill out the
// area up to the right edge of the keyboard.
// If keyWidth is fillBoth, the actual key width will be determined to fill out the
// area between the nearest key on the left hand side and the right edge of the
// keyboard.
return keyboardRightEdge - keyXPos;
default: // KEYWIDTH_NOT_ENUM
return KeyboardBuilder.getDimensionOrFraction(keyAttr,
R.styleable.Keyboard_Key_keyWidth, mParams.mBaseWidth, mDefaultKeyWidth);
}
}
} }
public KeyboardBuilder(Context context, KP params) { public KeyboardBuilder(Context context, KP params) {
@ -174,8 +243,6 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
mDisplayMetrics = res.getDisplayMetrics(); mDisplayMetrics = res.getDisplayMetrics();
mParams = params; mParams = params;
mParams.mHorizontalEdgesPadding = (int)res.getDimension(
R.dimen.keyboard_horizontal_edges_padding);
mParams.GRID_WIDTH = res.getInteger(R.integer.config_keyboard_grid_width); mParams.GRID_WIDTH = res.getInteger(R.integer.config_keyboard_grid_width);
mParams.GRID_HEIGHT = res.getInteger(R.integer.config_keyboard_grid_height); mParams.GRID_HEIGHT = res.getInteger(R.integer.config_keyboard_grid_height);
@ -270,11 +337,13 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
R.styleable.Keyboard_keyboardTopPadding, params.mOccupiedHeight, 0); R.styleable.Keyboard_keyboardTopPadding, params.mOccupiedHeight, 0);
params.mBottomPadding = (int)getDimensionOrFraction(keyboardAttr, params.mBottomPadding = (int)getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_keyboardBottomPadding, params.mOccupiedHeight, 0); R.styleable.Keyboard_keyboardBottomPadding, params.mOccupiedHeight, 0);
params.mHorizontalEdgesPadding = (int)getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_keyboardHorizontalEdgesPadding, mParams.mOccupiedWidth, 0);
params.mBaseWidth = params.mOccupiedWidth - params.mHorizontalEdgesPadding * 2 params.mBaseWidth = params.mOccupiedWidth - params.mHorizontalEdgesPadding * 2
- params.mHorizontalCenterPadding; - params.mHorizontalCenterPadding;
params.mDefaultKeyWidth = (int)getDimensionOrFraction(keyboardAttr, params.mDefaultKeyWidth = (int)getDimensionOrFraction(keyAttr,
R.styleable.Keyboard_keyWidth, params.mBaseWidth, R.styleable.Keyboard_Key_keyWidth, params.mBaseWidth,
params.mBaseWidth / DEFAULT_KEYBOARD_COLUMNS); params.mBaseWidth / DEFAULT_KEYBOARD_COLUMNS);
params.mHorizontalGap = (int)getDimensionOrFraction(keyboardAttr, params.mHorizontalGap = (int)getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_horizontalGap, params.mBaseWidth, 0); R.styleable.Keyboard_horizontalGap, params.mBaseWidth, 0);
@ -670,7 +739,6 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
} }
private void startRow(Row row) { private void startRow(Row row) {
row.mCurrentX = 0;
addEdgeSpace(mParams.mHorizontalEdgesPadding, row); addEdgeSpace(mParams.mHorizontalEdgesPadding, row);
mCurrentRow = row; mCurrentRow = row;
mLeftEdge = true; mLeftEdge = true;
@ -685,7 +753,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
mRightEdgeKey = null; mRightEdgeKey = null;
} }
addEdgeSpace(mParams.mHorizontalEdgesPadding, row); addEdgeSpace(mParams.mHorizontalEdgesPadding, row);
mCurrentY += mCurrentRow.mRowHeight; mCurrentY += row.mRowHeight;
mCurrentRow = null; mCurrentRow = null;
mTopEdge = false; mTopEdge = false;
} }
@ -706,7 +774,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
} }
private void addEdgeSpace(float width, Row row) { private void addEdgeSpace(float width, Row row) {
row.mCurrentX += width; row.advanceXPos(width);
mLeftEdge = false; mLeftEdge = false;
mRightEdgeKey = null; mRightEdgeKey = null;
} }