我有一个LinearLayout我希望显示或隐藏的内容Animation,只要我改变其可见性,就会向上或向下推动布局.
我在那里看到了一些样品,但它们都不适合我的需要.
我为动画创建了两个xml文件,但是当我更改a的可见性时,我不知道如何启动它们LinearLayout.
在我的应用程序中,我所有屏幕的第一个视图是EditText,因此每次进入屏幕时,屏幕键盘都会弹出.如何禁用此弹出窗口并在手动单击EditText时启用它?
eT = (EditText) findViewById(R.id.searchAutoCompleteTextView_feed);
eT.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(eT.getWindowToken(), 0);
}
}
});
Run Code Online (Sandbox Code Playgroud)
xml代码:
<ImageView
android:id="@+id/feedPageLogo"
android:layout_width="45dp"
android:layout_height="45dp"
android:src="@drawable/wic_logo_small" />
<Button
android:id="@+id/goButton_feed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/go" />
<EditText
android:id="@+id/searchAutoCompleteTextView_feed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/goButton_feed"
android:layout_toRightOf="@id/feedPageLogo"
android:hint="@string/search" />
<TextView
android:id="@+id/feedLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/feedPageLogo"
android:gravity="center_vertical|center_horizontal"
android:text="@string/feed"
android:textColor="@color/white" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ButtonsLayout_feed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
<Button
android:id="@+id/feedButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/feed"
android:textColor="@color/black" />
<Button
android:id="@+id/iWantButton_feed"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1" …Run Code Online (Sandbox Code Playgroud) 我有一个子类视图,当它在onTouchEvent中收到"修饰"时弹出键盘.它通过请求焦点,检索InputMethodManager,然后调用showSoftInput来显示此信息.
现在我需要弄清楚如何在按下它们时捕获软键盘的敲击字母.我目前只在软键盘上按下"下一个/完成"按钮时得到响应.
这是我的班级:
public class BigGrid extends View {
private static final String TAG = "BigGrid";
public BigGrid(Context context) {
super(context);
setFocusableInTouchMode(true); // allows the keyboard to pop up on
// touch down
setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.d(TAG, "onKeyListener");
if (event.getAction() == KeyEvent.ACTION_DOWN) {
// Perform action on key press
Log.d(TAG, "ACTION_DOWN");
return true;
}
return false;
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
Log.d(TAG, "onTOUCH");
if …Run Code Online (Sandbox Code Playgroud) 通常我会遇到一个给定对象需要有很多监听器的情况.例如,我可能有
class Elephant {
public void addListener( ElephantListener listener ) { ... }
}
Run Code Online (Sandbox Code Playgroud)
但我会遇到很多这样的情况.也就是说,我也会有一个Tiger对象TigerListener.现在,TigerListeners和ElephantListeners完全不同:
interface TigerListener {
void listenForGrowl( Growl qrowl );
void listenForMeow( Meow meow );
}
Run Code Online (Sandbox Code Playgroud)
而
interface ElephantListener {
void listenForStomp( String location, double intensity );
}
Run Code Online (Sandbox Code Playgroud)
我发现我总是必须在每个动物类中继续重新实现广播机制,并且实现总是相同的.有首选模式吗?
我想编写一个自定义键盘,它应该适用于运行Android 4.0及更高版本的所有设备.所以我首先搜索网络,但没有发现任何相关信息.那么如何创建一个取代Android的股票键盘的应用程序呢?
我想知道的是什么:
嗨,我需要一个软键盘只用数值0来9和Enter关键.不应该显示除了这些之外的任何东西. , ( )......

setRawInputType(Configuration.KEYBOARD_QWERTY)setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED)setRawInputType(InputType.TYPE_CLASS_NUMBER)setRawInputType(InputType.TYPE_CLASS_PHONE)我总是在键盘上显示额外的字符,如:

setRawInputType(Configuration.KEYBOARD_12KEY) 显示这样的键盘:

非常感谢任何帮助.提前致谢.
注意:
android:minSdkVersion="14":ICS4.0android:targetSdkVersion="17":JB 4.2qwerty android ime android-softkeyboard android-input-method
我创建了一个自定义键盘,它工作正常 - 除了前两行键的预览视图显示不够高.它们的垂直位置受到父布局的约束.
这些屏幕截图说明了问题 - "0"和"8"的预览位置是好的,但对于"5"和"2",它不是:
键'0'的预览显示在按钮上方...
键'8'的预览也显示在按钮上方...
但键'5'的预览未显示在按钮上方...
键'2'的预览未显示在按钮上方...
如何克服,因此"5"和"2"的预览显示在它们各自键上方相同的距离处,与"0"和"8"相同.
这是我的keyboard.xml ...
<android.inputmethodservice.KeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:keyPreviewLayout="@layout/keyboard_key_preview" />
Run Code Online (Sandbox Code Playgroud)
这是我的keyboard_key_preview.xml ...
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:background="@color/keyboard_preview_bg"
android:textColor="@color/keyboard_preview_fg"
android:textStyle="bold"
android:textSize="@dimen/keyboard_preview_text_size" />
Run Code Online (Sandbox Code Playgroud)
这是我的keyboard_numeric.xml布局......
<Keyboard
xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="33.33%p"
android:keyHeight="@dimen/keyboard_key_height"
android:horizontalGap="@dimen/keyboard_horizontal_gap"
android:verticalGap="@dimen/keyboard_vertical_gap">
<Row android:rowEdgeFlags="top">
<Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/>
<Key android:codes="50" android:keyLabel="2"/>
<Key android:codes="51" android:keyLabel="3" android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="52" android:keyLabel="4" android:keyEdgeFlags="left"/>
<Key android:codes="53" android:keyLabel="5"/>
<Key android:codes="54" android:keyLabel="6" android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="55" android:keyLabel="7" android:keyEdgeFlags="left"/>
<Key android:codes="56" android:keyLabel="8"/>
<Key …Run Code Online (Sandbox Code Playgroud) 我希望由于我的webView中的操作而弹出软键盘是不可能的.那是因为我有一个自定义的"键盘",由webView下面的按钮组成.但是,我不想为我的应用程序完全禁用键盘,因为我必须在不同的上下文中使用它.当用户单击webView中的输入字段时,它不应该显示.我也不希望键盘显示并立即再次隐藏.
我目前在我的这个AndroidManifest.xml:
android:windowSoftInputMode="stateAlwaysHidden"
Run Code Online (Sandbox Code Playgroud)
我已经尝试禁用webView的焦点,但是我不能用我的自定义"键盘"输入文本,因为webView的输入字段没有聚焦.
我也试过这个onCreate,但它不起作用(键盘仍然显示):
View focusedView = this.getCurrentFocus();
if (focusedView == null)
return;
InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (manager == null)
return;
manager.hideSoftInputFromWindow(focusedView.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud) 假设我有两个具有相同布局的文本字段,例如(地址),第一个输入要求地址为英文,键盘应默认显示为英文,第二个输入要求地址为阿拉伯语.
我的问题是:我是否可以在需要时使用特定语言显示键盘,例如阿拉伯语地址.
是否有类似android:inputType""语言的东西?
这InputMethodManager是一种应用程序可用于与系统键盘交互的服务.编辑EditText也喜欢用它来间接通知键盘变化(例如updateSelection).
我可以参考InputMethodManager这个
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
Run Code Online (Sandbox Code Playgroud)
我的问题是,这似乎只适用于系统键盘.我可以使用InputMethodManager一个自定义应用程序内的键盘?如果只是一个孤立的应用程序我不在乎,但我在一个库中包括一个将在许多应用程序中使用的自定义键盘.我需要一种标准的方式让编辑器与键盘进行通信.
我是否必须编写自己的输入法管理器,或者是否有办法在InputMethodManager我的自定义应用内键盘中使用该标准?
更新
以下是一些线索,说明如果无法使用标准输入法管理器,我将如何实现自己的自定义输入法管理器.
InputMethodManager(文件)(源代码)InputMethod 接口InputMethodSession 接口KeyboardView.OnKeyboardActionListener界面(键盘实现它)InputMethodService(键盘扩展此)(文档)(源代码)