我想知道它们之间的实际区别......每个应该何时使用,每个应该如何使用,以及哪些情况都有用?
举几个例子并详细解释.
在ListView我的每个项目中EditText.
当我设置android:focusable="false"为EditText然后onItemClick该ListView项目正在工作,但EditText我click在里面时没有得到光标.
如果我将设置android:focusable="true"为EditText,则EditText可获得焦点,但onItemClick对于ListView当我点击它不工作.
如何分离onItemClick和关注EditText这个项目?
注意:这里和其他地方都存在现有问题,但它们都是特定于 jQuery 的,并且没有涵盖纯 JavaScript 的规范答案,包括对 Web 组件的支持。
我想模拟按 Tab 键,以便焦点转移到 Tab 键顺序中的下一个元素。下一个元素可以是任何 HTML 可聚焦的 HTML 元素或带有tabindex="0". 这也需要在某些后代 HTML 元素可能是具有影子 DOM 的自定义 Web 组件的情况下起作用。
潜在的解决方案可能是触发按键事件或迭代后代节点以寻找可聚焦的节点。
我必须ListView在每个项目上做一个包含的内容EditText.如果EditText获得焦点,我必须显示一个对话框 - 条件严格适用于EditText获得焦点而不是按下时,因为即使没有按下也可以选择它...
为了做到这一点,我使用焦点监听器,EditText但是onFocusChanged当用户按下时,只有一次调用三次调用EditText,这意味着对话框被调用两次...
这是调用的顺序:
我没有任何其他特殊的处理ListView或EditText..所以它应该是从系统以某种方式,也许是因为我使用ListView上的EditText也是一个焦点View..
有没有人有任何想法为什么会发生这种情况,我怎么能"修复"这个?
先感谢您.
我使用ListView与自定义适配器它只有一个TextView
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item_content"
android:background="@drawable/list_item1"
android:layout_width="fill_parent" android:layout_height=""wrap_content"
/>
Run Code Online (Sandbox Code Playgroud)
继承我的选择背景:
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_enabled="false"
android:state_pressed="true"
android:drawable="@drawable/draw_list_item1" />
<item android:state_focused="true" android:state_enabled="false"
android:drawable="@drawable/draw_list_item_focused" />
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@drawable/draw_list_item_selected" />
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@drawable/draw_list_item_selected" />
<item android:state_focused="true"
android:drawable="@drawable/draw_list_item_focused" />
<item android:drawable="@drawable/draw_list_item1"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
问题是当我设置TextView属性时:
android:clickable="true"和android:focusable="true"
然后,我会看到我的焦点版本的背景,但设置这些会导致列表项不再响应点击和长按.删除这两个属性后,所有ListItem都会响应点击和长按.
应该做些什么才能使可聚焦背景可见并且点击响应两者都起作用.
我试过打电话getListView().setItemsCanFocus(true)但问题仍然存在.
我想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 before,
int count) {
// Set EditText non-focusable
MyActivity.this.editText2.setFocusableInTouchMode(false);
}
});
.
.
.
// Somewhere in one function I call below function to …Run Code Online (Sandbox Code Playgroud) 我试着运行以下代码:
focusables = container.find(":focusable"); where container is a div.
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Syntax error, unrecognized expression: unsupported pseudo: focusable
Run Code Online (Sandbox Code Playgroud)
我使用的是jquery-1.9.1.原因是什么?有没有其他方法可以找到div中的所有可聚焦元素?
如何在不可聚焦的 EditText 中显示带有 setError 的文本错误?重要的是用户不要修改此 EditText,它将为应用程序修改。也许我有另一个不同于 focusable=false 的选项?
现在,我有了:
<EditText
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:ems="10"
android:focusable="false"
android:inputType="text"
android:onClick="onClick" />
Run Code Online (Sandbox Code Playgroud)
非常感谢!
我有一个TextView每个词都是一个ClickableSpan.单击时,单词变为粗体,单词的字典定义显示在另一个TextView中.应用程序正常工作,直到我在TextView中选择文本.当文本可选时,单击会显示定义,但双击时该单词仅为粗体.双击或长按选择文本(但长按不会使单词变为粗体).
我的猜测是,问题与在动作处理过程中更新绘制状态有关,但我无法找到修复.我试过设置TextView focusable="false"但没有改变.相关代码如下.
curSpan = new WordSpan(index) {
@Override
public void onClick(View view) {
handleWordClick(index,this); // handles code to display definition
setMarking(true);
view.invalidate();
tvText.invalidate();
}
};
spannableStringBuilder.setSpan(curSpan, totalLength, totalLength + strWord, Spanned.SPAN_COMPOSING);
Run Code Online (Sandbox Code Playgroud)
和WordSpan定义:
class WordSpan extends ClickableSpan
{
int id;
private boolean marking = false;
public WordSpan(int id) {
this.id = id;
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(Color.BLACK);
ds.setUnderlineText(false);
if (marking) {
ds.setTypeface(Typeface.create(myFont,Typeface.BOLD));
} …Run Code Online (Sandbox Code Playgroud) 我一直在下拉菜单/弹出菜单上工作,除了一个例外,它工作得很好。当您单击链接(或按Enter键)以打开菜单时,应该将焦点设置为可以接收焦点的下一个元素。因此,在此示例中,单击“菜单1”链接,应展开菜单,并将焦点设置在“测试1”上。但是由于某种原因,它跳转到最后一个可聚焦元素(测试3):
<ul class="axxs-menu">
<li><a class="trigger">Menu 1</a>
<ul class="content">
<li><a href="#1">test 1</a></li>
<li><a href="#2">test 2</a></li>
<li><a href="#3">test 3</a></li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这是相关的js:
jQuery.extend(jQuery.expr[':'], {
focusable: function(el, index, selector){
return $(el).is('a, button, :input, [tabindex]');
}
});
function openPopmenu(element) {
$(element).removeClass('trigger-inactive').addClass('trigger-active').attr("aria-expanded", "true").attr("aria-selected", "true");
$(element).next('.collapsed').removeClass('collapsed').addClass('expanded').show().attr("aria-hidden", "false");
$(element).next().find(':focusable').focus();
}
Run Code Online (Sandbox Code Playgroud)
这是一支代码笔:
http://codepen.io/tactics/pen/EZbGBY
任何帮助深表感谢。
focusable ×10
android ×7
focus ×2
javascript ×2
jquery ×2
listview ×2
background ×1
click ×1
clickable ×1
onitemclick ×1
shadow-dom ×1
tabindex ×1
xml ×1