android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
+ android:nextFocusRight="@+id/floatSearchButton"
android:choiceMode="singleChoice"
android:clickable="true"
android:fastScrollEnabled="true"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:nextFocusLeft="@id/android:list"
android:onClick="onSearchButtonClick"
android:src="@drawable/ic_search_black_24dp" />
android:id="@+id/onDeviceHeaderLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:focusable="false"
android:background="@color/gray"
android:orientation="horizontal"
android:padding="10dip">
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
+ android:focusable="false"
android:text="@string/dictionariesOnDevice"
android:textAppearance="?android:attr/textAppearanceLarge" />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <item name="searchView" type="id" />
+ <item name="languageButton" type="id" />
+</resources>
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
import android.graphics.Color;
import android.graphics.Typeface;
import android.net.Uri;
saveOnlyFirstSubentry = prefs.getBoolean(getString(R.string.saveOnlyFirstSubentryKey),
false);
clickOpensContextMenu = prefs.getBoolean(getString(R.string.clickOpensContextMenuKey),
- false);
+ !getPackageManager().hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN));
Log.d(LOG, "wordList=" + wordList + ", saveOnlyFirstSubentry=" + saveOnlyFirstSubentry);
onCreateSetupActionBarAndSearchView();
});
languageButton = new ImageButton(customSearchView.getContext());
+ languageButton.setId(R.id.languageButton);
languageButton.setScaleType(ScaleType.FIT_CENTER);
languageButton.setOnClickListener(new OnClickListener() {
@Override
customSearchView.addView(languageButton, lpb);
searchView = new SearchView(getSupportActionBar().getThemedContext());
+ searchView.setId(R.id.searchView);
// Get rid of search icon, it takes up too much space.
// There is still text saying "search" in the search field.
// Avoid wasting space on large left inset
Toolbar tb = (Toolbar)customSearchView.getParent();
tb.setContentInsetsRelative(0, 0);
+
+ getListView().setNextFocusLeftId(R.id.searchView);
+ findViewById(R.id.floatSwapButton).setNextFocusRightId(R.id.languageButton);
+ languageButton.setNextFocusLeftId(R.id.floatSwapButton);
}
@Override
button.setOnClickListener(intentLauncher);
listView.addHeaderView(button);
+ listView.setItemsCanFocus(true);
listView.setAdapter(new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
setMyListAdapater();
registerForContextMenu(getListView());
+ getListView().setItemsCanFocus(true);
readableCheckAndError(true);
} else {
button.setEnabled(false);
+ button.setFocusable(false);
}
if (builder.length() != 0) {
builder.append("; ");
DictionaryActivity.getLaunchIntent(getApplicationContext(),
application.getPath(dictionaryInfo.uncompressedFilename),
dictionaryInfo.indexInfos.get(0).shortName, "")));
- row.setFocusable(true);
+ // do not setFocusable, for keyboard navigation
+ // offering only the index buttons is better.
row.setLongClickable(true);
}
row.setBackgroundResource(android.R.drawable.menuitem_background);