1. 程式人生 > >Dialog新增webview+原生控制元件webview高度自適應問題

Dialog新增webview+原生控制元件webview高度自適應問題

用原生dialog實現上述效果,底部兩個按鈕是原生控制元件,上面是webview

顯示效果是 無論webview高度是多少,底部按鈕永遠顯示。

遇到問題:

1.用RelativeLayout實現按鈕在最低端,dialog高度會佔滿全屏,如果webview內容顯示超過螢幕高度還好,如果不超過會大片留白,pass

2.用LinearLayout實現正常垂直排列,如果webview高度不超過螢幕高度正常可以顯示出按鈕,如果超過了則按鈕被擠壓不見,pass

解決方案參照原生dialog的佈局,中間內容高度自適應,下面確認跟取消按鈕永遠顯示。

<?xml version="1.0" encoding="utf-8"?> <!-- /* //device/apps/common/res/layout/alert_dialog.xml ** ** Copyright 2006, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** **     http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. */ -->

<LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@+id/parentPanel"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:orientation="vertical"     android:paddingTop="9dip"     android:paddingBottom="3dip"     android:paddingStart="3dip"     android:paddingEnd="1dip">

    <LinearLayout android:id="@+id/topPanel"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:minHeight="54dip"         android:orientation="vertical">         <LinearLayout android:id="@+id/title_template"             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:orientation="horizontal"             android:gravity="center_vertical"             android:layout_marginTop="6dip"             android:layout_marginBottom="9dip"             android:layout_marginStart="10dip"             android:layout_marginEnd="10dip">             <ImageView android:id="@+id/icon"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:layout_gravity="top"                 android:paddingTop="6dip"                 android:paddingEnd="10dip"                 android:src="@drawable/ic_dialog_info" />             <com.android.internal.widget.DialogTitle android:id="@+id/alertTitle"                 style="?android:attr/textAppearanceLarge"                 android:singleLine="true"                 android:ellipsize="end"                 android:layout_width="match_parent"                 android:layout_height="wrap_content"                 android:textAlignment="viewStart" />         </LinearLayout>         <ImageView android:id="@+id/titleDivider"             android:layout_width="match_parent"             android:layout_height="1dip"             android:visibility="gone"             android:scaleType="fitXY"             android:gravity="fill_horizontal"             android:src="@android:drawable/divider_horizontal_dark" />         <!-- If the client uses a customTitle, it will be added here. -->     </LinearLayout>

    <LinearLayout android:id="@+id/contentPanel"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_weight="1"         android:orientation="vertical">         <ScrollView android:id="@+id/scrollView"             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:paddingTop="2dip"             android:paddingBottom="12dip"             android:paddingStart="14dip"             android:paddingEnd="10dip"             android:overScrollMode="ifContentScrolls">             <TextView android:id="@+id/message"                 style="?android:attr/textAppearanceMedium"                 android:layout_width="match_parent"                 android:layout_height="wrap_content"                 android:padding="5dip" />         </ScrollView>     </LinearLayout>

    <FrameLayout android:id="@+id/customPanel"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_weight="1">         <FrameLayout android:id="@+android:id/custom"             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:paddingTop="5dip"             android:paddingBottom="5dip" />     </FrameLayout>

    <LinearLayout android:id="@+id/buttonPanel"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:minHeight="54dip"         android:orientation="vertical" >         <LinearLayout             style="?android:attr/buttonBarStyle"             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:orientation="horizontal"             android:paddingTop="4dip"             android:paddingStart="2dip"             android:paddingEnd="2dip"             android:measureWithLargestChild="true">             <LinearLayout android:id="@+id/leftSpacer"                 android:layout_weight="0.25"                 android:layout_width="0dip"                 android:layout_height="wrap_content"                 android:orientation="horizontal"                 android:visibility="gone" />             <Button android:id="@+id/button1"                 android:layout_width="0dip"                 android:layout_gravity="start"                 android:layout_weight="1"                 style="?android:attr/buttonBarButtonStyle"                 android:maxLines="2"                 android:layout_height="wrap_content" />             <Button android:id="@+id/button3"                 android:layout_width="0dip"                 android:layout_gravity="center_horizontal"                 android:layout_weight="1"                 style="?android:attr/buttonBarButtonStyle"                 android:maxLines="2"                 android:layout_height="wrap_content" />             <Button android:id="@+id/button2"                 android:layout_width="0dip"                 android:layout_gravity="end"                 android:layout_weight="1"                 style="?android:attr/buttonBarButtonStyle"                 android:maxLines="2"                 android:layout_height="wrap_content" />             <LinearLayout android:id="@+id/rightSpacer"                 android:layout_width="0dip"                 android:layout_weight="0.25"                 android:layout_height="wrap_content"                 android:orientation="horizontal"                 android:visibility="gone" />         </LinearLayout>      </LinearLayout> </LinearLayout> 上述為官方alert_dialog.xml的檔案,參照上述檔案

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:background="@drawable/bg_dialog_style_n"
              android:paddingTop="5dp"
              android:orientation="vertical"
              android:paddingBottom="5dp"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">
    <LinearLayout android:layout_width="match_parent"
                  android:layout_height="0dp"
                  android:layout_weight="1">
        <WebView android:layout_width="wrap_content"
                 android:id="@+id/wv"
                 android:layout_height="wrap_content">
        </WebView>
    </LinearLayout>


    <LinearLayout
            android:id="@+id/ll_update"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        <Button
                android:id="@+id/tv_no_agree"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="再等等"
                android:layout_marginLeft="15dp"
                android:layout_marginRight="7dp"
                android:textSize="18sp"
                android:textColor="#898989"
                android:background="#eeeeee"
                android:gravity="center"/>


        <Button
                android:id="@+id/tv_agree"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="18sp"
                android:layout_marginLeft="7dp"
                android:layout_marginRight="15dp"
                android:text="現在下載"
                android:textColor="#ffffff"
                android:background="#2b2b2b"
                android:gravity="center"/>
    </LinearLayout>


</LinearLayout>