СоХабр закрыт.
С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.
package com.sunplacestudio.keyboardsecondtry;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
public class CustomKeyboard extends LinearLayout {
private float scale;
private OnCustomKeyBoardListener onCustomKeyBoardListener;
interface OnCustomKeyBoardListener { // Интерфейс обратного вызова
void onKeyBoardClear();
void onKeyBoardClick(String text);
}
public void setOnCustomKeyBoardListener(OnCustomKeyBoardListener onCustomKeyBoardListener) {
this.onCustomKeyBoardListener = onCustomKeyBoardListener;
}
public CustomKeyboard(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
setOrientation(HORIZONTAL);
setMinimumHeight((int) (scale * 50 + 0.5f));
scale = context.getResources().getDisplayMetrics().density;
Button[] buttons = new Button[10];
buttons[0] = getButton("1");
buttons[1] = getButton("2");
buttons[2] = getButton("3");
buttons[3] = getButton("4");
buttons[4] = getButton("5");
buttons[5] = getButton("6");
buttons[6] = getButton("7");
buttons[7] = getButton("8");
buttons[8] = getButton("9");
buttons[9] = getButton("0");
for (Button button : buttons)
addView(button); // Кидаем все кнопки в наш лайаут
Button button = getButton("C");
button.setOnClickListener(new OnClickListener() {
@Override public void onClick(View view) {
if (onCustomKeyBoardListener != null)
onCustomKeyBoardListener.onKeyBoardClear();
}
});
addView(button);
}
private Button getButton(final String text) {
Button button = new Button(getContext());
LinearLayout.LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) (scale * 50 + 0.5f));
layoutParams.weight = 1;
button.setLayoutParams(layoutParams);
button.setText(text);
button.setOnClickListener(new OnClickListener() {
@Override public void onClick(View view) {
if (onCustomKeyBoardListener != null)
onCustomKeyBoardListener.onKeyBoardClick(text); // вызываем нажатие кнопки
}
});
return button;
}
}
package com.sunplacestudio.keyboardsecondtry;
import android.content.Context;
import android.support.v7.widget.AppCompatEditText;
import android.text.InputType;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
public class CustomEditText extends AppCompatEditText implements View.OnTouchListener {
private OnCustomEditTextListener onCustomEditTextListener;
public void setOnCustomEditTextListener(OnCustomEditTextListener onCustomEditTextListener) { this.onCustomEditTextListener = onCustomEditTextListener; }
public interface OnCustomEditTextListener {
void onClick();
}
public CustomEditText(Context context) {
super(context);
setOnTouchListener(this);
setInputType(InputType.TYPE_NULL);
setSelected(false);
setGravity(Gravity.CENTER);
}
public CustomEditText(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
setOnTouchListener(this);
setInputType(InputType.TYPE_NULL);
setSelected(false);
setGravity(Gravity.CENTER);
}
@Override public boolean onTouch(View view, MotionEvent event) {
super.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_DOWN && onCustomEditTextListener != null)
onCustomEditTextListener.onClick();
return false;
}
}
package com.sunplacestudio.keyboardsecondtry;
package com.sunplacestudio.keyboardsecondtry;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private CustomKeyboard customKeyboard;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final CustomEditText customEditText = findViewById(R.id.edittext);
customKeyboard = findViewById(R.id.keyboard);
customEditText.setOnCustomEditTextListener(new CustomEditText.OnCustomEditTextListener() {
@Override public void onClick() {
customKeyboard.setVisibility(View.VISIBLE);
}
});
customKeyboard.setOnCustomKeyBoardListener(new CustomKeyboard.OnCustomKeyBoardListener() {
@Override public void onKeyBoardClear() {
customEditText.setText(""); // очишаем текст
}
@Override public void onKeyBoardClick(String text) {
String result = customEditText.getText() + text; // обновляем наш текст
customEditText.setText(result); // выводим его
}
});
}
@Override public void onBackPressed() {
customKeyboard.setVisibility(View.GONE); // Прячем нашу клавиатуру - как отловить это событие внутри самой клавиатуры я так и не нашёл
}
}
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.sunplacestudio.keyboardsecondtry.CustomEditText
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="50dp" />
<com.sunplacestudio.keyboardsecondtry.CustomKeyboard
android:visibility="gone"
android:id="@+id/keyboard"
android:layout_gravity="bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</FrameLayout>
комментарии (0)