Интерфейс, диалоги, темы, стили, меню
-
aleksbim
- Сообщения: 81
- Зарегистрирован: 02 фев 2013, 02:52
Сообщение
aleksbim » 07 янв 2016, 01:20
Код: Выделить всё
<Row>
<Key
android:codes="49"
android:keyEdgeFlags="left"
android:keyWidth="25%p"
android:keyLabel="1" />
<Key
android:codes="50"
android:keyWidth="25%p"
android:keyLabel="2" />
<Key
android:codes="51"
android:keyWidth="25%p"
android:keyLabel="3" />
Чтобы пользователь мог редактировать Custom клавиатуру?
Пытаюсь сделать так:
добавляю имя ID в xml файле
Код: Выделить всё
<Key
android:id="@+id/custom_key1"
android:codes="55005"
android:keyWidth="25%p"
android:keyLabel="3" />
В коде на красном подчеркивании - ошибка Cannot cast from View to Keyboard.Key
-
Вложения
-

- Снимок.JPG (13.36 КБ) 4413 просмотров
-
Sergey777
- Сообщения: 68
- Зарегистрирован: 30 мар 2015, 17:16
Сообщение
Sergey777 » 18 янв 2016, 16:36
aleksbim писал(а):Код: Выделить всё
<Row>
<Key
android:codes="49"
android:keyEdgeFlags="left"
android:keyWidth="25%p"
android:keyLabel="1" />
<Key
android:codes="50"
android:keyWidth="25%p"
android:keyLabel="2" />
<Key
android:codes="51"
android:keyWidth="25%p"
android:keyLabel="3" />
Чтобы пользователь мог редактировать Custom клавиатуру?
Пытаюсь сделать так:
добавляю имя ID в xml файле
Код: Выделить всё
<Key
android:id="@+id/custom_key1"
android:codes="55005"
android:keyWidth="25%p"
android:keyLabel="3" />
В коде на красном подчеркивании - ошибка Cannot cast from View to Keyboard.Key
Чтобы использовать клавиши, ссылку на которую вы пытаетесь создать, нужно для начала создать саму клавиатуру в Вашем файле разметки.
Код: Выделить всё
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<android.inputmethodservice.KeyboardView
android:id="@+id/keyboardview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:visibility="gone" />
</RelativeLayout>
Сами клавиши создаём например тут: res/xml/hexkbd.xml
Код: Выделить всё
<Row>
<Key
android:codes="49"
android:keyEdgeFlags="left"
android:keyWidth="25%p"
android:keyLabel="1" />
<Key
android:codes="50"
android:keyWidth="25%p"
android:keyLabel="2" />
<Key
android:codes="51"
android:keyWidth="25%p"
android:keyLabel="3" />
</Row>
В коде клавиши из ресурсов подключаются к KeyboardView приблизительно так:
Код: Выделить всё
// подключаем клавиши из ресурсов
Keyboard mKeyboard= new Keyboard(MainActivity, R.xml.hexkbd);
// ссылка на KeyboardView
KeyboardView mKeyboardView= (KeyboardView)findViewById(R.id.keyboardview);
// присоединяем клавиши к компоненту
mKeyboardView.setKeyboard( mKeyboard );
// не выводим всплывающее окно для выбранной клавиши
mKeyboardView.setPreviewEnabled(false);
-
aleksbim
- Сообщения: 81
- Зарегистрирован: 02 фев 2013, 02:52
Сообщение
aleksbim » 19 янв 2016, 02:26
Спасибо за ответ, но задачу реализовать не смог.
Создаю пустой проект с одной кнопкой, при нажатии на кот. нужно изменить отображаемое значение клавиши клавиатуры (android:keyLabel= ...)
Код: Выделить всё
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<android.inputmethodservice.KeyboardView
android:id="@+id/keyboardview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:visibility="gone" />
<Button
android:id="@+id/change_keylabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_toRightOf="@+id/button1"
android:onClick="change_keylabel"
android:text="change_keylabel" />
</RelativeLayout>
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyHeight="10%p"
android:keyWidth="12.50%p"
>
<Row>
<Key
android:codes="49"
android:keyEdgeFlags="left"
android:keyWidth="25%p"
android:keyLabel="1" />
<Key
android:codes="50"
android:keyWidth="25%p"
android:keyLabel="2" />
<Key
android:id="@+id/custom_key1"
android:codes="51"
android:keyWidth="25%p"
android:keyLabel="3" />
</Row>
</Keyboard>
Код: Выделить всё
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void change_keylabel(View v){
// подключаем клавиши из ресурсов
Keyboard mKeyboard= new Keyboard(MainActivity.this, R.xml.hexkbd);
// ссылка на KeyboardView
KeyboardView mKeyboardView= (KeyboardView)findViewById(R.id.keyboardview);
// присоединяем клавиши к компоненту
mKeyboardView.setKeyboard( mKeyboard );
// не выводим всплывающее окно для выбранной клавиши
mKeyboardView.setPreviewEnabled(false);
mKeyboardView.setVisibility(View.VISIBLE);
Key custom_key1=(Key) findViewById(R.id.custom_key1); //???????????
custom_key1.setText"11"; //???????????
}
}
-
Вложения
-

- Снимок.JPG (13.36 КБ) 4401 просмотр