Закрыть / скрыть программную клавиатуру Android

Я считаю, что matplotlib еще не установил правильную равную ось в 3D ... Но я нашел трюк несколько раз назад (я не помню, где), что я адаптировал его. Концепция заключается в создании фальшивой кубической ограничивающей рамки вокруг ваших данных. Вы можете протестировать его с помощью следующего кода:

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_aspect('equal')

X = np.random.rand(100)*10+5
Y = np.random.rand(100)*5+2.5
Z = np.random.rand(100)*50+25

scat = ax.scatter(X, Y, Z)

# Create cubic bounding box to simulate equal aspect ratio
max_range = np.array([X.max()-X.min(), Y.max()-Y.min(), Z.max()-Z.min()]).max()
Xb = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][0].flatten() + 0.5*(X.max()+X.min())
Yb = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][1].flatten() + 0.5*(Y.max()+Y.min())
Zb = 0.5*max_range*np.mgrid[-1:2:2,-1:2:2,-1:2:2][2].flatten() + 0.5*(Z.max()+Z.min())
# Comment or uncomment following both lines to test the fake bounding box:
for xb, yb, zb in zip(Xb, Yb, Zb):
   ax.plot([xb], [yb], [zb], 'w')

plt.grid()
plt.show()
Данные

z примерно на порядок больше, чем x и y, но даже с опцией равной оси, автомасштабирование оси z matplotlib:

bad [/g0]

Но если вы добавите ограничивающий прямоугольник, вы получите правильное масштабирование:

enter image description here [/g1]

3562
задан 15 revs, 12 users 36% 21 December 2017 в 23:47
поделиться

6 ответов

Вы можете заставить Android скрыть виртуальную клавиатуру, используя InputMethodManager , вызывая hideSoftInputFromWindow , передавая токен окна, содержащего ваше сфокусированное представление.

// Check if no view has focus:
View view = this.getCurrentFocus();
if (view != null) {  
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

Это заставит клавиатуру быть скрытой во всех ситуациях. В некоторых случаях вам может понадобиться передать InputMethodManager.HIDE_IMPLICIT_ONLY в качестве второго параметра, чтобы гарантировать, что вы скрываете клавиатуру только тогда, когда пользователь явно не заставлял ее появляться (удерживая меню).

Примечание: Если вы хотите сделать это в Kotlin, используйте: context? .GetSystemService (Context.INPUT_METHOD_SERVICE) as InputMethodManager

Kotlin Syntax

// Check if no view has focus:
 val view = this.currentFocus
 view?.let { v ->
  val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager 
  imm?.hideSoftInputFromWindow(v.windowToken, 0)
 }
4371
ответ дан 17 December 2019 в 16:00
поделиться

Попробуйте этот код ниже в onCreate ()

EditText edtView=(EditText)findViewById(R.id.editTextConvertValue);
edtView.setInputType(0);
136
ответ дан 17 December 2019 в 16:00
поделиться

также полезно скрывать программную клавиатуру:

getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN
);

Это может быть использовано для подавления мягкой клавиатуры, пока пользователь на самом деле не коснусь представления EditText.

791
ответ дан 17 December 2019 в 16:00
поделиться

Решение Майера работает и для меня. В моем случае верхний уровень моего приложения - это tabHost, и я хочу скрыть ключевое слово при переключении вкладок - я получаю маркер окна из tabHost View.

tabHost.setOnTabChangedListener(new OnTabChangeListener() {
    public void onTabChanged(String tabId) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(tabHost.getApplicationWindowToken(), 0);
    }
}
145
ответ дан 17 December 2019 в 16:00
поделиться

Просто Добавляют следующую строку в AndroidManifest в определенном действии.

<activity
        android:name=".MainActivity"
        android:screenOrientation="portrait">
        android:windowSoftInputMode="adjustPan"/>
4
ответ дан 17 December 2019 в 16:00
поделиться

Легкое обходное решение ist ко всего editText.setEnabled(false);editText.setEnabled(true); в Вашем методе Кнопки onClick().

2
ответ дан 17 December 2019 в 16:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: