Articles of 焦点

临时禁用EditText

我希望EditText暂时不会获得积分。 场景是:我有两个EditTexts。 每当更改任何EditText的文本时,我希望另一个EditText不响应用户点击,直到发生另一个预定义事件。 为此,我尝试了这个: @Override protected void onResume() { super.onResume(); Log.d(TAG, “onResume”); registerBroadcastReceivers(); } // Register BroadcastReceivers private void registerBroadcastReceivers() { Log.d(TAG, “Registering broadcast receivers.”); // Google response receiver googleResponseReceiver = new GoogleAPIResponseReceiver(); IntentFilter googleResponseIntentFilter = new IntentFilter( RS_GoogleApiIntentService.ACTION_RECEIVED_GOOGLE_RESPONSE); googleResponseIntentFilter.addCategory(Intent.CATEGORY_DEFAULT); LocalBroadcastManager.getInstance(this).registerReceiver( googleResponseReceiver, googleResponseIntentFilter); } editText1.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int […]

如何为EditText同时使用singleLine =“false”和imeOptions =“actionNext”?

背景 假设您有多个EditText实例。 您希望能够使用键盘的下一个按钮(用作ENTER键的替换)在它们之间切换。 每个EditText可能有一个长内容,可以多行显示(假设我希望将其限制为3行,如果文本仍然太长,请使用ellipsize)。 问题 正如我所注意到的,TextView和EditText都有非常奇怪的行为,缺乏一些基本function。 其中之一是,如果您希望转到下一个视图,则需要为每个EditText实例设置singleLine =“true”。 我试过的 我已经尝试了下一个xml布局(和其他试验),但它不起作用: 我也尝试了下一个代码,但它确实是一个愚蠢的解决方案: … final EditText editText=(EditText)findViewById(R.id.editText1); editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(final TextView v,final int actionId,final KeyEvent event) { if(actionId==EditorInfo.IME_NULL) { final View view=findViewById(editText.getNextFocusDownId()); if(view!=null) { view.requestFocus(); return true; } } return false; } }); 它有效,但由于下一个原因,这是一个愚蠢的解决方案: 我需要为每个EditText设置此行为(或扩展EditText并在那里添加某种逻辑)。 它不会显示软键盘中键的“下一步”。 而是显示ENTER键。 使用XML不允许我在最后设置ellipsize并且我不断获得滚动行为。 问题 有没有更好的方法来实现这一目标? 一个优雅,工作和显示“下一个”键而不是ENTER键?

Android,Admob / Adview从edittext窃取焦点,如何预防?

我正在创建视图并将这些视图添加到linearlayout,这些输入来自屏幕底部的edittext,就像一个消息应用程序。 每当我按下“完成”按钮时,它会触发并将该消息添加到该消息的linearlayout。 问题 : 当我想在这些消息之间放置adview时,例如每10条消息之间。 Edittext失去焦点,导致整个布局向下滚动。 我想要的是 : Edittext不应该失去焦点,每次它应该是活动的,等待键盘打开输入。 我尝试过但没有用的: if (messageCounter % 10 == 0) { LinearLayout advertisedMessageLayout = new LinearLayout(this); advertisedMessageLayout.setOrientation(LinearLayout.VERTICAL); advertisedMessageLayout.setLayoutParams(new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); AdView av = new AdView(this, AdSize.BANNER, MBConstants.ADVIEW_ID); //remove focus for every child of adview for (int i = 0; i < av.getChildCount(); i++) { av.getChildAt(i).setFocusable(false); av.getChildAt(i).setFocusableInTouchMode(false); av.getChildAt(i).setClickable(false); } […]

选择项目后,Permanent NavigationView松散焦点

我从Android Studio的基本模板开始了一个带有导航抽屉的项目。 我做的唯一修改是将其显示为永久性,以便拥有平板电脑/电视布局。 为实现这一目标,我所做的唯一修改是在xml布局中。 这允许NavigationView始终可见。 我也把项目放在Github上,所以任何人都可以测试它。 GITHUB上的项目演示 https://github.com/ChristopheVersieux/NavFocus 发生什么事 当我开始用D-pad选择抽屉上的物品时,我的问题出现了。 选择项目后,焦点将完全丢失。 试图回到抽屉并获得焦点似乎非常困难,我必须用右/左箭头尝试几次 预期的是什么: 抽屉应保持焦点,或者焦点应该很容易带回抽屉。 我做了什么: 我最简单的想法是强制Drawer再次获得焦点,但这段代码不会改变任何东西: navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { menuItem.setChecked(true); //This is where I will replace the Fragments in the right area. navigationView.clearFocus(); navigationView.requestFocus(); return true; } }); 非常感谢你的帮助。

自定义Android键盘焦点问题

我目前正在开发一个自定义键盘应用程序,该应用程序将针对使用DPad作为其主要输入设备的设备进行优化。 我的问题是当光标在EditText字段中并按下(例如KEYCODE_DPAD_DOWN)时,键盘视图没有接收焦点和KeyEvents。 没有任何反应,或者有问题的EditText下方的元素会获得焦点。 以下是相关代码。 任何帮助将非常感激。 我已经尝试解析SoftKeyboard示例以及KeyboardView.java以获取提示但没有成功。 谢谢,布莱恩 MyKeyboard.java public class MyKeyboard extends InputMethodService { private static final String TAG = “MyKeyboard”; private MyKeyboardView mInputView = null; @Override public void onCreate() { super.onCreate(); } @Override public View onCreateInputView() { mInputView = (MyKeyboardView) getLayoutInflater().inflate(R.layout.input, null); // attempts to make this focusable mInputView.setClickable(true); mInputView.setFocusableInTouchMode(true); mInputView.setFocusable(true); mInputView.setEnabled(true); return mInputView; […]

OnFocusChange并不总是有效

在我的一个活动中,我有三个EditText和一个OK按钮。 OnFocusChangeListener设置为所有三个EditText 。 每次焦点丢失时,听众都应该触发。 在EditText之间切换可以完美地工作。 但是,如果用户按下OK按钮,则在按下按钮之前没有针对用户聚焦的EditText触发的焦点改变(失去焦点)。 我的代码出了什么问题? private class MyOnFocusChangeListener implements OnFocusChangeListener { private EditText editText; public MyOnFocusChangeListener(final EditText editText) { super(); this.editText = editText; } @Override public void onFocusChange(final View view, final boolean isFocused) { if (!isFocused) { if (editText == editText1) { // Do a calculation } else if (editText == editText2) { […]

为什么Android TabHost会从TextView中窃取焦点?

我有一个使用以下布局的应用程序: alt text http://img15.imageshack.us/img15/238/screenshot003xbo.png 当应用程序启动时,焦点位于第一个TextView上,但如果您尝试在其中键入任何字母,焦点将直接转到选项卡。 似乎我不是唯一一个与这个问题作斗争的人 ,也许这与以下内容有关: http://groups.google.com/group/android-developers/browse_thread/thread/435791bbd6c550a/8022183887f38f4f?lnk=gst&q=tabs+focus#8022183887f38f4f 无论如何,你知道为什么会这样吗? 当然,任何解决方法都将受到赞赏。 我发布下面的代码,以避免重载问题: XML: 和Java代码: TabHost tab_host = (TabHost) findViewById(R.id.edit_item_tab_host); // don’t forget this setup before adding tabs from a tabhost using a xml view or you’ll get an nullpointer exception tab_host.setup(); TabSpec ts1 = tab_host.newTabSpec(“TAB_DATE”); ts1.setIndicator(getString(R.string.when), getResources().getDrawable(R.drawable.ic_dialog_time)); ts1.setContent(R.id.edit_item_date_tab); tab_host.addTab(ts1); TabSpec ts2 = tab_host.newTabSpec(“TAB_GEO”); ts2.setIndicator(getString(R.string.where), getResources().getDrawable(R.drawable.ic_dialog_map)); ts2.setContent(R.id.edit_item_geocontext_tab); […]

Android:在聚焦父级时更改TextView textColor

我在LinearLayout有一个TextView 。 LinearLayout能够接收焦点,我希望TextView的textColor在它发生时改变。 我认为使用ColorStateList会起作用,但是当LinearLayout这样做时, TextView似乎没有得到焦点。 我知道,因为我尝试过这段代码: mTextView.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { Log.d(TAG, “Changed TextView focus to: ” + hasFocus); } }); 没有任何记录。 我不想在LinearLayout上使用OnFocusChangeListener来更改TextView的textColor ,我想这必须从XML完成。 原因是因为在另一个活动中我有一个带有自定义适配器和自定义视图的ExpandableListView ,当项目被聚焦时,Android会在我的自定义视图中更改TextView的textColor (从亮到暗)。

Radio Group没有获得Android专注

所以我有一个包含两个EditText组件和一个RadioGroup的表单。 当我点击其中一个EditText字段时,键盘popup,我可以正确,一切都很棒。 直到我点击其中一个RadioButtons,然后点击键盘仍然没有! 当我使用键盘时,它在最后一个专注的EditText(Android 4.0)中写入,而在我的Galaxy S2(Android 2.3.6)上,它会崩溃应用程序! 我研究了这个问题,我发现这是(Android 2.0-)中的一个已知问题,那么我正在做什么有什么问题? 我希望能够使用onFocusChange监听器来validationRadioGroup选择吗? 任何想法将不胜感激。

从Android中的RecycleView中删除焦点指示符

我有一个使用RecyclerView的应用程序,在平板电脑上我显示浅蓝色背景。 特别是在Jelly Bean设备和模拟器中。 我试图通过将我的RecyclerView标记为android:focusable=”false”来删除它android:focusable=”false”我知道它是焦点指示器,因为在模拟器上如果我按Tab键它会消失并突出显示UI上的按钮。 它没有出现在我用过的手机上。 那么为什么它会在触摸设备上呈现呢? 我怎么摆脱它呢?