1. 程式人生 > >自定義對話方塊全屏模式(模擬Activity)

自定義對話方塊全屏模式(模擬Activity)

記錄一下開發中碰到的自定義對話方塊需要更改為Activity 樣式,全屏, 有輸入框被鍵盤遮擋的解決方式:

1.佈局檔案寫法:

<?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="wrap_content"     android:background="@drawable/bg_main"     android:orientation="vertical" >

    <!-- top text -->

    <ScrollView         android:layout_width="match_parent"         android:layout_height="match_parent" >

        <LinearLayout             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:orientation="vertical" >

            <RelativeLayout                 android:layout_width="fill_parent"                 android:layout_height="90dp"                 android:layout_marginTop="@dimen/maintitle_margin_top"                 android:background="@drawable/bg_title" >

                <Button                     android:id="@+id/btn_cancel"                     android:layout_width="wrap_content"                     android:layout_height="match_parent"                     android:layout_marginLeft="20dp"                     android:background="@drawable/transparent_background"                     android:gravity="center_vertical"                     android:text="@string/btn_cancel"                     android:textColor="@color/brown"                     android:textSize="26sp" />

                <TextView                     android:layout_width="wrap_content"                     android:layout_height="match_parent"                     android:layout_centerHorizontal="true"                     android:gravity="center_vertical"                     android:paddingLeft="10dp"                     android:text="@string/btn_add_wifi"                     android:textColor="@color/brown"                     android:textSize="26sp" />

                <Button                     android:id="@+id/btn_ok"                     android:layout_width="wrap_content"                     android:layout_height="match_parent"                     android:layout_alignParentRight="true"                     android:layout_marginRight="18dp"                     android:background="@drawable/transparent_background"                     android:gravity="center_vertical"                     android:text="@string/btn_wifi_confirm"                     android:textColor="@color/brown"                     android:textSize="26sp" />             </RelativeLayout>

            <LinearLayout                 android:layout_width="600dp"                 android:layout_height="wrap_content"                 android:layout_gravity="center_horizontal"                 android:layout_marginTop="100dp"                 android:gravity="center_horizontal"                 android:orientation="vertical" >

                <!-- SSID -->

                <LinearLayout                     android:layout_width="match_parent"                     android:layout_height="wrap_content"                     android:orientation="horizontal" >

                    <TextView                         android:layout_width="wrap_content"                         android:layout_height="wrap_content"                         android:gravity="right"                         android:minWidth="200dp"                         android:text="@string/pre_ssid"                         android:textColor="@color/brown"                         android:textSize="26sp" />

                    <EditText                         android:id="@+id/ssid"                         android:layout_width="561dp"                         android:layout_height="wrap_content"                         android:hint="@string/wifi_ssid"                         android:imeOptions="actionDone"                         android:singleLine="true"                         android:textColor="@color/brown"                         android:textSize="24.0sp" />                 </LinearLayout>

                <!-- Safety -->

                <LinearLayout                     android:layout_width="match_parent"                     android:layout_height="wrap_content"                     android:layout_marginTop="10dp"                     android:orientation="horizontal" >

                    <TextView                         android:layout_width="wrap_content"                         android:layout_height="wrap_content"                         android:layout_gravity="center_vertical"                         android:gravity="right"                         android:minWidth="200dp"                         android:text="@string/pre_safety"                         android:textColor="@color/brown"                         android:textSize="26sp" />

                    <Spinner                         android:id="@+id/security"                         android:layout_width="match_parent"                         android:layout_height="wrap_content"                         android:prompt="@string/wifi_security"                         android:spinnerMode="dropdown" />                 </LinearLayout>

                <LinearLayout                     android:id="@+id/fields"                     android:layout_width="match_parent"                     android:layout_height="wrap_content"                     android:layout_marginTop="10dp"                     android:orientation="horizontal"                     android:visibility="visible" >

                    <TextView                         android:layout_width="wrap_content"                         android:layout_height="wrap_content"                         android:layout_gravity="center_vertical"                         android:gravity="right"                         android:minWidth="200dp"                         android:text="@string/pre_pwd"                         android:textColor="@color/brown"                         android:textSize="26sp" />

                    <EditText                         android:id="@+id/password"                         android:layout_width="match_parent"                         android:layout_height="wrap_content"                         android:layout_marginLeft="3dp"                         android:hint="@string/wifi_password"                         android:imeOptions="actionDone"                         android:singleLine="true"                         android:textColor="@color/brown"                         android:textSize="24.0sp" />                 </LinearLayout>             </LinearLayout>         </LinearLayout>     </ScrollView>

</LinearLayout>

2.對話方塊的style:

<style name="daPingMuDialog" parent="@android:Theme.Dialog">         <item name="android:windowFrame">@android:color/transparent</item>         <item name="android:windowFullscreen">true</item>         <item name="android:windowNoTitle">true</item>         <item name="android:windowIsFloating">true</item>         <item name="android:windowContentOverlay">@null</item>         <item name="android:windowIsTranslucent">true</item>         <item name="android:windowBackground">@android:color/transparent</item>         <item name="android:backgroundDimEnabled">true</item>        <!--  <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>  -->             </style>

3.對應Activity的鍵盤彈出模式:

 <activity             android:name="com.lenkeng.framesettings.activity.WifiSettings"             android:launchMode="singleTask"             android:screenOrientation="landscape"             android:exported="true"             >

4.在Dialog的建構函式中載入style 樣式:

public WifiDialog(Activity context, View.OnClickListener listener,             AccessPoint accessPoint, boolean edit) {         super(context, R.style.daPingMuDialog);         mContext = context;         this.edit = edit;         mListener = listener;         mAccessPoint = accessPoint;         mSecurity = (accessPoint == null) ? AccessPoint.SECURITY_NONE                 : accessPoint.security;     }

5.在Dialog 的onCreate 中設定window 屬性:

@Override     protected void onCreate(Bundle savedInstanceState) {                                 mView = getLayoutInflater().inflate(R.layout.wifi_dialog, null);         setContentView(mView);         // setInverseBackgroundForced(true);         setCancelable(true);         Window window = getWindow();                  WindowManager.LayoutParams lp = window.getAttributes();         lp.width= WindowManager.LayoutParams.MATCH_PARENT;         lp.height=WindowManager.LayoutParams.MATCH_PARENT;         lp.dimAmount = 1f;         getWindow().setAttributes(lp);

...

}