Я борюсь с управлением фокусом WebView: WebView мешает управлению фокусом классических компонентов. Вот простое приложение с EditBox и WebView в нем, которое загружает Google!
А вот код Java:
public class WebtagActivity extends Activity
{
// UI components.
private WebView mContent;
private EditText mUrl;
@Override
public void onCreate (Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mContent = (WebView) findViewById(R.id.uiContent);
mContent.getSettings().setJavaScriptEnabled(true);
mContent.loadUrl("http://www.google.fr/");
}
}
Основываясь на этом очень простом примере, невозможно сосредоточиться на WebView (т. Е. На Google поле ввода поискового запроса)! Однако при добавлении «mContent.requestFocus ();» во время инициализации дела идут лучше. Я могу переключиться с моего EditText на свой WebView, если я сначала нажму на WebView ... Но вскоре поведение становится очень "неустойчивым", когда WebView иногда не фокусируется при прикосновении к нему, иногда получает его, но остается с прямоугольником фокуса вокруг полей WebView (оранжевый или зеленый в зависимости от вашего телефона) после еще одного прикосновения к компоненту EditText (в котором я могу писать текст)!
В любом случае, я нашел решение - добавить touchListener и запросить фокус при нажатии на WebView:
mContent.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
});
Это решает почти все проблемы (переключение с классических компонентов на WebView и написание текста), кроме одной: WebView сохраняет focusRectangle (зеленый или оранжевый) вокруг поля независимо от того, есть ли у него фокус или нет. На приведенном ниже снимке экрана мой EditText имеет фокус и получает текст, но WebView по-прежнему выглядит так, как будто он имеет фокус. Я попробовал clearFocus, но ничего не вышло:
Есть идеи, как решить эту проблему? мой EditText имеет фокус и получает текст, но WebView по-прежнему выглядит так, как будто он имеет фокус. Я попробовал clearFocus, но ничего не помогло:
Есть идеи, как решить эту проблему? мой EditText имеет фокус и получает текст, но WebView по-прежнему выглядит так, как будто он имеет фокус. Я попробовал clearFocus, но ничего не помогло:
Есть идеи, как решить эту проблему? Большое спасибо за вашу помощь!