2

EditTextsとWebViewをレイアウトに追加しようとしています。問題は、WebViewに焦点を当てることです。もう一度質問することを決定する前に、WebとStackoverflowで回答を調べてみました。

Webビューには、POSTを介して送信されるいくつかの入力フィールドがあります。最初にWebviewを選択した場合(次にフィールドに値を入力した場合)、問題ありません。ただし、最初にEditTextsを選択すると、EditTextセクションのカーソルと並行して別のカーソルが設定されているように見えますが、Webビューに焦点を合わせてWebページのフィールドに入力することはできません。結果のWebページには、EditTextsに追加する必要のある情報が含まれています。

これまでの私のコード:

public class LoadWebandEditText extends Activity {

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    setContentView(R.layout.oauth_signin);
    final WebView webpage = (WebView)findViewById(R.id.webview_page);
    webpage.setWebViewClient(new WebViewClient());
    webpage.loadUrl("www.towardsmypage.com");


    Button btn_next = (Button)findViewById(R.id.btn_next);
    final EditText edittext_1 = (EditText)findViewById(R.id.editText_1); 
    final EditText edittext_2 = (EditText)findViewById(R.id.EditText_2);


    webpage.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {
              webpage.requestFocus();
              webpage.setFocusable(true);
          }
        });

    webpage.setOnFocusChangeListener(new OnFocusChangeListener(){

        public void onFocusChange(View arg0, boolean hasFocus) {


            if (!hasFocus){
                webpage.requestFocus();
                webpage.setFocusable(true);
            }
        }
 });

私のLayout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <WebView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview_page"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.7" 
        android:focusable="true"/>

    <TextView
            android:id="@+id/TextView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="15dip"
            android:text="Enter Field Information 1"
            android:textSize="18dp"
            android:textStyle="bold"
            android:typeface="sans" />

    <EditText
        android:id="@+id/editText_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPassword" >


    </EditText>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="15dip"
        android:text="Enter Field Information 2"
        android:textSize="18dp"
        android:textStyle="bold"
        android:typeface="sans" />

    <EditText
        android:id="@+id/EditText_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPassword" />

    <Button
        android:id="@+id/btn_next"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" 
        android:layout_gravity="center_horizontal" />
</LinearLayout>
4

1 に答える 1

2

数週間前に同じ問題が発生しました。答えは簡単です。onTouchListenerをWebビューに設定してから、次のように設定します。

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;
}

編集: 実際、私は「関連」カテゴリで正確な重複を見つけました。これを読んでください。

それがあなたが探しているものではないかどうか私に知らせてください。

于 2012-08-13T02:44:00.700 に答える