Проблема с фокусом в Android WebView

Я борюсь с управлением фокусом 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, но ничего не помогло:

Посмотреть результат

Есть идеи, как решить эту проблему? Большое спасибо за вашу помощь!

11
задан Ratamovic 28 November 2010 в 12:50
поделиться