Tôi đang chiến đấu với quản lý tập trung của WebView: WebView messes với quản lý tập trung của các thành phần cổ điển. Đây là một ứng dụng đơn giản chỉ với một EditBox và một WebView trong đó tải Google!Android WebView tập trung vấn đề
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:and="http://schemas.android.com/apk/res/android"
xmlns:webtag="http://schemas.android.com/apk/res/com.webtag"
and:orientation="vertical" and:layout_width="fill_parent" and:layout_height="fill_parent">
<LinearLayout and:id="@+id/HorizontalScrollView02"
and:layout_width="fill_parent" and:layout_height="wrap_content">
<EditText and:id="@+id/EditText01"
and:layout_width="wrap_content" and:layout_height="wrap_content"
and:text="@+id/EditText01"/>
</LinearLayout>
<WebView and:id="@+id/uiContent"
and:layout_weight="1"
and:layout_width="fill_parent"
and:layout_height="fill_parent"/>
</LinearLayout>
Và đây là đoạn code 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/");
}
}
Dựa trên ví dụ rất đơn giản này, nó không thể được tập trung vào các WebView (ví dụ: google thuật ngữ tìm kiếm hộp đầu vào)! Tuy nhiên, khi thêm "mContent.requestFocus();" trong quá trình khởi tạo, mọi thứ trở nên tốt hơn. Nhưng tôi có thể chuyển từ EditText sang WebView nếu tôi chỉ nhấp vào WebView đầu tiên ... Nhưng hành vi sẽ sớm trở nên "thất thường", với WebView đôi khi không tập trung khi chạm vào nó, đôi khi nhận được nó nhưng ở lại với một hình chữ nhật tiêu điểm xung quanh các trường WebView (màu cam hoặc màu xanh lá cây tùy thuộc vào điện thoại của bạn) sau một lần chạm khác để quay lại thành phần EditText (trong đó tôi có thể viết văn bản)!
Dù sao, một giải pháp tôi thấy là thêm một touchListener và yêu cầu tập trung khi nhấp vào một 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;
}
});
Điều này giải quyết hầu hết các vấn đề (chuyển đổi từ các thành phần cổ điển để WebView và viết văn bản) trừ một: WebView giữ tiêu điểm Hình chữ nhật (màu xanh lá cây hoặc màu cam) xung quanh các trường cho dù nó có tiêu điểm hay không. Trong ảnh chụp màn hình dưới đây, EditText của tôi có tiêu điểm và nhận văn bản nhưng WebView vẫn có vẻ như nó có tiêu điểm. Tôi cố gắng clearFocus nhưng điều đó không làm bất cứ điều gì:
Bất kỳ ý tưởng làm thế nào để giải quyết này? Cảm ơn rất nhiều sự giúp đỡ của bạn!
xem câu trả lời của tôi ở đây: https://stackoverflow.com/questions/3981716/ cant-click-on-listview-which-rows-are-made-of-webviews/48652004 # 48652004 Chỉ cần sử dụng sự kiện onTouch –