Не получается поменять значение android:keyLabel= ...

Интерфейс, диалоги, темы, стили, меню
Ответить
aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Не получается поменять значение android:keyLabel= ...

Сообщение 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
Снимок.JPG (13.36 КБ) 3504 просмотра

Sergey777
Сообщения: 68
Зарегистрирован: 30 мар 2015, 17:16

Re: Не получается поменять значение android:keyLabel= ...

Сообщение 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

Re: Не получается поменять значение android:keyLabel= ...

Сообщение 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
Снимок.JPG (13.36 КБ) 3492 просмотра

Ответить