2017-05-18 10 views
0

AndroidスタジオでAndroidに小さなアプリケーションを開発しています。 URLに接続し、フルスクリーンモードでWebページを表示するのは単なるWebViewです。私はそれを無効にするソフトウェアのキーボードは必要ありませんが、まだ私のwebview(画像参照)の下部にポップアップキーボードを示しています。私がクリックするとポップアップが消えますが、ウェブビューのどの部分でクリックしても再び表示されます。いずれの場合でもキーボードは表示されません。ポップアップだけです。Android:WebViewの下部にあるポップアップソフトキーボード

URLコンテンツを編集できません。

どうすればこのポップアップを完全に無効にすることができますか?

Pop up Keyboard

これは私のAndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="cl.archibaldo.floreantpos"> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <application 
     android:theme="@style/AppTheme" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher" 
     android:supportsRtl="true" 
     > 
     <activity 
      android:name=".ActivityWebView" 
      android:alwaysRetainTaskState="true" 
      android:configChanges="keyboardHidden" 
      android:screenOrientation="landscape" 
      android:windowSoftInputMode="stateAlwaysHidden" 
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> 
     </activity> 
     <activity android:name=".MainActivity" 
      android:screenOrientation="portrait" 
      > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

マイactivity_webview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:descendantFocusability="blocksDescendants" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="cl.archibaldo.floreantpos.ActivityWebView"> 

    <WebView 

     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:id="@+id/webview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"/> 
</LinearLayout> 

そして、私のActivityWebView.java

です
package cl.archibaldo.floreantpos; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 
import android.view.WindowManager; 
import android.webkit.WebView; 

public class ActivityWebView extends Activity { 

    WebView myWebView; 
    View decorView; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Intent intent = getIntent(); 
     String url = intent.getStringExtra("URL"); 
     this.setContentView(R.layout.activity_webview); 

     hideSystemUI(); 

     myWebView = (WebView) this.findViewById(R.id.webview); 
     myWebView.getSettings().setJavaScriptEnabled(true); 
     myWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
     myWebView.setSaveEnabled(true); 
     myWebView.getSettings().setLoadWithOverviewMode(true); 
     myWebView.getSettings().setUseWideViewPort(true); 
     myWebView.loadUrl(url); 

     decorView.setOnSystemUiVisibilityChangeListener 
       (new View.OnSystemUiVisibilityChangeListener() { 
        @Override 
        public void onSystemUiVisibilityChange(int visibility) { 
         if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { 
          Handler espera3segundos = new Handler(); 
          espera3segundos.postDelayed(new Runnable(){ 
           public void run(){ 
            hideSystemUI(); 
           } 
          },3000); 
         } 
        } 
       }); 


    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
    } 

    private void hideSystemUI() { 

     this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
     decorView = this.getWindow().getDecorView(); 
     decorView.setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
         | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
         | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar 
         | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 
         | View.SYSTEM_UI_FLAG_IMMERSIVE); 

    } 


} 

ありがとうございました。私の英語には申し訳ありません。私はまだ学んでいます。よろしく。

答えて

0

はあなたlayout.xml

android:descendantFocusability="blocksDescendants" 

とあなたのWebViewの中でプロパティを次のように設定の主(親)のレイアウトに次のコードを追加します。

android:focusable="false" 
android:focusableInTouchMode="true" 
+0

回答ありがとうございました:)私は試してみますが、動作しません。 –

+0

これは前にここで答えられました: http://stackoverflow.com/a/29409478/3280468 –

+0

@AmitSharma返信ありがとうございます。あなたが提案した答えで試したが、うまくいかなかった。キーボードが既に無効になっているので、元の投稿の画像に表示されるポップアップキーボードが消えてしまいます。 –

関連する問題