说真的,没有人知道如何实现这个目标?这甚至可能吗?也许是或否答案可以帮助我!
我的表格看起来像这样:
上面有B的矩形表示是按钮。其他字段是编辑文本和文本视图。
我希望能够按Tabulator键盘并朝这个方向聚焦:
这是我的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/ContenedorPrincipal"
tools:context=".ClientsActivity" >
<TextView
android:id="@+id/textViewTask"
style="@style/FTitle"
android:text="@string/new_task" />
<!--____________________ Section: form, field: name task______________________________-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="3dp"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewTaskName"
style="@style/FForm"
android:text="@string/name" />
<EditText
android:id="@+id/editTextTaskName"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textCapSentences" >
</EditText>
</LinearLayout>
<!--______________________________ Section: form, fields: company,employee____________________-->
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="3dip"
android:stretchColumns="1,4" >
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textViewCompany"
style="@style/FForm"
android:text="@string/company" />
<AutoCompleteTextView
android:id="@+id/autocompleteCompany" />
<ImageButton
android:id="@+id/imageButtonWatchCompany"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_view"
android:contentDescription="@string/see_company"/>
<TextView
android:id="@+id/textViewEmployee"
style="@style/FForm"
android:text="@string/employee" />
<AutoCompleteTextView
android:id="@+id/autocompleteEmployee" />
<ImageButton
android:id="@+id/imageButtonWatchEmployee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_view"
android:contentDescription="@string/see_employee"/>
</TableRow>
<!--____________________ Section: form, fields: date, time______________________________-->
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textViewDate"
style="@style/FForm"
android:text="@string/date" />
<Button
android:id="@+id/buttonDate" >
</Button>
<TextView />
<TextView
android:id="@+id/textViewTime"
style="@style/FForm"
android:text="@string/time" />
<Button
android:id="@+id/buttonTime">
</Button>
</TableRow>
</TableLayout>
<!--____________________ Section: form, field description ______________________________-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewDescription"
style="@style/FForm"
android:text="@string/description" />
<EditText
android:id="@+id/editTextDescription"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:lines="5"
android:gravity="top|left"
android:scrollbars="vertical"
android:inputType="textMultiLine|textCapSentences"/>
</LinearLayout>
<CheckBox
android:id="@+id/checkBoxDone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/mark_as_done"/>
<!--____________________ Section: buttons: save and clean______________________________-->
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="3dip"
android:stretchColumns="0,1">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="UselessParent" >
<Button
android:id="@+id/buttonSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/save" />
<Button
android:id="@+id/buttonClean"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/clean" />
</TableRow>
</TableLayout>
反正有没有这个?任何帮助都会得到帮助。
解
在布局中确保使用android:imeOptions =“actionNext”:
<AutoCompleteTextView
android:id="@+id/autocompleteCompany"
android:imeOptions="actionNext" />
在onCreateView方法中以编程方式调用个人方法:
private void setUpFocus(View view){
etName.setNextFocusDownId(R.id.autocompleteCompany);
etCompany.setNextFocusDownId(R.id.imageButtonWatchCompany);
ImageButton button = (ImageButton) view.findViewById(R.id.imageButtonWatchCompany);
button.setFocusableInTouchMode(true);
}
使用这部分代码,使用tab键,我可以从名称,然后是公司,然后是第一个按钮,然后是员工。
答案 0 :(得分:1)
您可以覆盖活动的onKeyDown()方法,以显式处理Tab键按下,按您希望的顺序切换焦点。请记住,如果您使用imeOptions,您的密钥代码可能会有所不同,在这种情况下,您可以检查这些特定操作(即下一步,完成等)。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keycode == KeyEvent.KEYCODE_TAB) {
View currentFocus = getCurrentFocus();
switch (currentFocus.getId()) {
case R.id.etName:
etCompany.requestFocus();
return true;
case R.id.etCompany:
btn3.requestFocus();
return true;
...
}
}
return super.onKeyDown(keyCode, event);
}
此外,请确保您的按钮可以对焦http://developer.android.com/reference/android/view/View.html#attr_android:focusable并且可以在触控模式下对焦。
android:focusable="true"
android:focusableInTouchMode="true"
答案 1 :(得分:0)
在xml布局中,您应该只能为每个元素设置android:imeOptions="actionNext"
标记。这应该使软键盘显示下一个按钮,将焦点移动到下一个框或按钮。
您可能希望将保存按钮设置为android:imeOptions="actionDone"
,以便用户可以通过保存来完成表单。
编辑:此stackoverflow答案描述了如何将焦点设置为按钮并帮助OP解决问题:https://stackoverflow.com/a/3234884/815679