Я считаю, что 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:
[/g0]
Но если вы добавите ограничивающий прямоугольник, вы получите правильное масштабирование:
[/g1]
Вы можете заставить 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)
}
Попробуйте этот код ниже в onCreate ()
EditText edtView=(EditText)findViewById(R.id.editTextConvertValue);
edtView.setInputType(0);
также полезно скрывать программную клавиатуру:
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN
);
Это может быть использовано для подавления мягкой клавиатуры, пока пользователь на самом деле не коснусь представления EditText.
Решение Майера работает и для меня. В моем случае верхний уровень моего приложения - это 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);
}
}
Просто Добавляют следующую строку в AndroidManifest в определенном действии.
<activity
android:name=".MainActivity"
android:screenOrientation="portrait">
android:windowSoftInputMode="adjustPan"/>
Легкое обходное решение ist ко всего editText.setEnabled(false);editText.setEnabled(true);
в Вашем методе Кнопки onClick()
.