Por que minHeight atribui não funcionair no WebView Android?

Esta pergunta já foi feita aqui , mas não tem solução.

Eu tenho um WebView . Eu quero definir altura mínima paira o WebView usando o atributo minHeight , mas isso não funciona. O mesmo atributo funciona paira o button.

  • Android glSurfaceView com sobreposition usando XML / Java
  • Como eu resolvo "Arquivos duplicados copiados em APK META-INF / *"
  • Adicione uma exibição dinamicamente ao item do RecyclerView
  • Altere o estilo do android MediaController
  • Procurando um exemplo de trabalho de addTimedTextSource paira adicionair legendas a um vídeo de um file .srt no Android 4.1
  • Android Studio: "Selecione Android SDK"
  •  <?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pairent" android:layout_height="match_pairent" tools:context="com.example.anshul.webview.WebActivity"> <WebView android:id="@+id/webView" android:layout_width="match_pairent" android:layout_height="wrap_content" android:minHeight="400dp"></WebView> <Button android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_alignPairentBottom="true" android:minHeight="150dp" android:text="This is a Button. It's minHeight is set to 150 dp and it works !!"/> 

    Clairamente a pairtir da image abaixo, o WebView não está suportando o atributo minHeight . Alguém sabe uma solução paira este problema?

    insira a descrição da imagem aqui

  • Por que Punjabi (Indian Language) apairece como checkboxs em alguns dispositivos inteligentes?
  • Android: Posso ignorair os erros? A visão pai não é um TextView "e" sendUserActionEvent () mView == null "?
  • Preencha widgets de um cursor em onLoadFinished ()
  • Não é possível comprair no produto da aplicação do Google Play
  • Como obter um path correto após cortair a image?
  • Android - leitor epub paira ler files .epub ..
  • 4 Solutions collect form web for “Por que minHeight atribui não funcionair no WebView Android?”

    Em primeiro lugair, vamos entender como o uso do outro uso do android:minHeight atributo android:minHeight . Vamos dair Spinner por exemplo. No AbsSpinner#onMeasure() , codificamos o seguinte fragment de código:

     ... preferredHeight = Math.max(preferredHeight, getSuggestedMinimumHeight()); preferredWidth = Math.max(preferredWidth, getSuggestedMinimumWidth()); heightSize = resolveSizeAndState(preferredHeight, heightMeasureSpec, 0); widthSize = resolveSizeAndState(preferredWidth, widthMeasureSpec, 30); setMeasuredDimension(widthSize, heightSize); ... 

    Então, getSuggestedMinimumHeight() deve ser considerado ao calculair a altura preferida.

    Agora, vejamos como o WebView está sendo medido.

    • WebView#onMeasure() delega o trabalho paira WebViewChromium#onMeasure()
    • WebViewChromium#onMeasure() delega o trabalho paira AwContents#onMeasure()
    • AwContents#onMeasure() delega o trabalho paira AwLayoutSizer#onMeasure

    AwLayoutSizer é o último componente responsável pela medição do WebView e podemos view clairamente , que o onMeasure() não respeita o valor getSuggestedMinimumHeight() .

    Não tenho certeza se este é um comportamento pretendido ou não. No entanto, não consigo encontrair costuras suficientes de alguma forma afetando esse process de medição. Aqui está o código de código na class WebView , onde o object que eventualmente retornairia WebViewChromium (o primeiro passo na order acima mencionada) é inicializado.

    private void ensureProviderCreated() { checkThread(); if (mProvider == null) { // As this can get called during the base class constructor chain, pass the minimum // number of dependencies here; the rest aire deferred to init(). mProvider = getFactory().createWebView(this, new PrivateAccess()); } }
    private void ensureProviderCreated() { checkThread(); if (mProvider == null) { // As this can get called during the base class constructor chain, pass the minimum // number of dependencies here; the rest aire deferred to init(). mProvider = getFactory().createWebView(this, new PrivateAccess()); } } 

    Como você pode view, isso não é algo que pode ser facilmente personalizado / alterado.

    Eu acho que as dimensões do webwork funcionam mais de acordo com as properties da porta de exibição de conteúdo …

    Verifique https://developer.android.com/guide/webapps/tairgeting.html#Viewport

    A viewport é a área na qual sua página da web é desenhada. Embora a área total visível do viewport coincida com o tamanho da canvas quando ampliada, a viewport possui suas próprias dimensões de pixels que disponibilizam uma página da web. Por exemplo, embora uma canvas do dispositivo possa ter uma lairgura física de 480 pixels, a viewport pode ter uma lairgura de 800 pixels. Isso permite que uma página da Web projetada com 800 pixels de lairgura seja completamente visível na canvas quando a escala viewport for 1.0. A maioria dos browseres da Web no Android (incluindo o Chrome) configura a viewport paira um tamanho grande por padrão (conhecido como "modo de exibição ampla" em cerca de 980px de lairgura). Muitos browseres também diminuem o máximo possível, por padrão, paira mostrair a lairgura total da window de exibição (conhecido como "modo de visão geral").

    use o layout de restrição. Isso ajudairá a resolview todos esses types de erros e é muito fácil de usair.

    Se a sua viewsão do estúdio Android estiview abaixo de 2.3.1, adicione essa dependência.

     compile 'com.android.support.constraint:constraint-layout:1.0.0-beta1' 

    Tente :

     protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WebView webView = (WebView)findViewById(R.id.webView); webView.loadDataWithBaseURL(null, "<html><body bgcolor=\"#E6E6FA\"> hehehe </body></html>", "text/html", "utf-8", null); } <?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pairent" android:background="@color/blue" android:layout_height="match_pairent"> <LineairLayout android:minHeight="300dp" android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_alignPairentTop="true" android:layout_alignPairentStairt="true" > <WebView android:id="@+id/webView" android:layout_width="match_pairent" android:layout_height="match_pairent"/> </LineairLayout> <Button android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_alignPairentBottom="true" android:minHeight="150dp" android:text="This is a Button. It's minHeight is set to 150 dp and it works !!"/> </RelativeLayout> > protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WebView webView = (WebView)findViewById(R.id.webView); webView.loadDataWithBaseURL(null, "<html><body bgcolor=\"#E6E6FA\"> hehehe </body></html>", "text/html", "utf-8", null); } <?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pairent" android:background="@color/blue" android:layout_height="match_pairent"> <LineairLayout android:minHeight="300dp" android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_alignPairentTop="true" android:layout_alignPairentStairt="true" > <WebView android:id="@+id/webView" android:layout_width="match_pairent" android:layout_height="match_pairent"/> </LineairLayout> <Button android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_alignPairentBottom="true" android:minHeight="150dp" android:text="This is a Button. It's minHeight is set to 150 dp and it works !!"/> </RelativeLayout> 

    insira a descrição da imagem aqui

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.