2016-10-04 2 views
0

Привет У меня есть пользовательские клавиатуры или Numpad у меня есть 2 проблемы, которые я не знаю, как сделать это .......... .. когда я нажимаю кнопку назад приложение закрывается, я хочу, чтобы сдвинуть клавиатуру вниз на первый при нажатии на кнопку назад и я хочу то же самое, если я нажму на мой макет (белый) (смотрите на картинке и будет понимать)Как я могу сдвинуть пользовательские клавиатуры вниз с задней кнопки и bytouching расположение

enter image description here

public class BasicOnKeyboardActionListener implements OnKeyboardActionListener { 

private Activity mTargetActivity; 


public BasicOnKeyboardActionListener(Activity targetActivity) { 
    mTargetActivity = targetActivity; 
} 

@Override 
public void swipeUp() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void swipeRight() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void swipeLeft() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void swipeDown() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onText(CharSequence text) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onRelease(int primaryCode) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onPress(int primaryCode) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onKey(int primaryCode, int[] keyCodes) { 
    long eventTime = System.currentTimeMillis(); 
    KeyEvent event = new KeyEvent(eventTime, eventTime, 
      KeyEvent.ACTION_DOWN, primaryCode, 0, 0, 0, 0, 
      KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE); 

    mTargetActivity.dispatchKeyEvent(event); 
} 

CustomKeyboardView.class

public class CustomKeyboardView extends KeyboardView { 

public CustomKeyboardView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public void showWithAnimation(Animation animation) { 
    animation.setAnimationListener(new AnimationListener() { 

     @Override 
     public void onAnimationStart(Animation animation) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 
      setVisibility(View.VISIBLE); 
     } 
    }); 

    setAnimation(animation); 
} 

KeyboardWidgetTutorialActivity.class

public class KeyboardWidgetTutorialActivity extends Activity { 

private CustomKeyboardView mKeyboardView; 
private View mTargetView; 
private Keyboard mKeyboard; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 
    mKeyboard = new Keyboard(this, R.xml.keyboard); 
    mTargetView = (EditText) findViewById(R.id.target); 
    mTargetView.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      showKeyboardWithAnimation(); 
      return true; 
     } 
    }); 

    mKeyboardView = (CustomKeyboardView) findViewById(R.id.keyboard_view); 
    mKeyboardView.setKeyboard(mKeyboard); 
    mKeyboardView 
      .setOnKeyboardActionListener(new BasicOnKeyboardActionListener(
        this)); 
} 


private void showKeyboardWithAnimation() { 
    if (mKeyboardView.getVisibility() == View.GONE) { 
     Animation animation = AnimationUtils 
       .loadAnimation(KeyboardWidgetTutorialActivity.this, 
         R.anim.slide_in_bottom); 
     mKeyboardView.showWithAnimation(animation); 
    } 
} 

это основной XML

<RelativeLayout android:id="@+id/LinearLayout1" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<LinearLayout android:layout_width="fill_parent" 
    android:id="@+id/container" android:layout_alignParentTop="true" 
    android:layout_height="fill_parent" android:layout_above="@+id/keyboard_view"> 
    <EditText android:layout_width="fill_parent" android:id="@+id/target" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

<it.anddev.tutorial.CustomKeyboardView 
    android:id="@+id/keyboard_view" android:visibility="gone" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true"></it.anddev.tutorial.CustomKeyboardView> 

+1

вы должны override ** onBackPressed ** метод вроде этого и скрыть клавиатуру @Override общественного недействительными onBackPressed() { super.onBackPressed(); } –

+0

как писать для слайд вниз? и как насчет того, когда я нажимаю на макет – CJS

ответ

1

Override onBackPressed() метод KeyboardWidgetTutorialActivity деятельности и скрыть, если его открытая клавиатура.

@Override 
    public void onBackPressed() { 
     if (mKeyboardView.isShown()) { 
      mKeyboardView.setVisibility(View.GONE); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

Пусть Пробел ваше белое пространство это расположение или это может быть любой макет.

 LinearLayout whiteSpace = (LinearLayout) findViewById(R.id.whitespace); 
     whiteSpace.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (hasFocus) { 
        if (mKeyboardView != null && mKeyboardView.isShown()) { 
         mKeyboardView.setVisibility(View.GONE); 
        } 
       } 
      } 
     }); 
+0

, спасибо, что сработало, но как насчет того же, если я нажму на макет? (пустой белый) – CJS

+0

@MikeB проверить обновленный ответ. –

+0

не работает Я попробовал – CJS

1

Вы можете использовать slide_out анимацию, чтобы скользить вниз для скрытия клавиатуры

slide_out.xml

<?xml version="1.0" encoding="utf-8"?> 
<translate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="@android:integer/config_longAnimTime" 
    android:fromXDelta="0%p" 
    android:toXDelta="-100%p"> 
    </translate> 

и, как вы уже используете скрыть свой вид после анимации

 Смежные вопросы

  • Нет связанных вопросов^_^