1. 程式人生 > >Android 以Dialog的方式顯示Activity,並且處理背景四個角為圓角,去掉黑角

Android 以Dialog的方式顯示Activity,並且處理背景四個角為圓角,去掉黑角

將Activity以Dialog的方式顯示出來,並不難,只需要在AndroidManifest.xml檔案中配置一下就可以了。

把背景設定成圓角也不是很難,可以自己處理,亦可以直接是背景圖。。。

在我看來,最難得是去掉黑角。黑角是怎麼來的咧?

Activity預設的背景是黑色的,不透明的,當你把背景設定成別的顏色,並且設定成圓角後,Activity本身所佔有的空間,是包含了圓角的一個正方形,或者長方形,顯示出來的圓角,在我看來,就是把最上面顯示的為圓角,最下面的為黑色的正方形,當設定圓角,多出來的部分顯示為黑色,就出現了所謂的黑角。。。

在網上找了很多的方法,也忘記了哪種方式成功的設定成了圓角,並且隱藏掉了黑角,現在就根據我自己的看法,來總結一下吧。。。

1.首先是佈局檔案。這裡,千萬不要給最外面的父容器新增背景,如果添加了,那麼黑角怎麼都隱藏不掉了。也許你的黑角也隱藏不掉,看看這裡吧,可以試試。。。

這個部落格,主要記錄的就是這裡,不要給最外面的父容器新增背景。。。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:layout_width="281.33dip"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" >

        <TextView
            android:id="@+id/member_details_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/member_details_top_bg"
            android:gravity="center_vertical"
            android:padding="13dip"
            android:text="患者健康檔案"
            android:textColor="@android:color/white"
            android:textSize="17sp" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/member_details_title"
            android:background="@drawable/member_details_bottom_bg"
            android:orientation="vertical"
            android:paddingBottom="20dip"
            android:paddingLeft="13dip"
            android:paddingRight="13dip"
            android:paddingTop="14dip" >

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="條目"
                android:textColor="#FF48ce55"
                android:textSize="17sp" />

            <LinearLayout
                android:id="@+id/member_details_entry"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:padding="6dip" >
            </LinearLayout>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingTop="14dip"
                android:text="說明"
                android:textColor="#FF48ce55"
                android:textSize="17sp" />

            <TextView
                android:id="@+id/member_details_explain"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dip"
                android:layout_marginTop="6dip"
                android:text="患者授權"
                android:textColor="#FF6a6c6f"
                android:textSize="14sp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingTop="14dip"
                android:text="備註"
                android:textColor="#FF48ce55"
                android:textSize="17sp" />

            <TextView
                android:id="@+id/member_details_remark"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dip"
                android:layout_marginTop="6dip"
                android:text="患者授權"
                android:textColor="#FF6a6c6f"
                android:textSize="14sp" />
        </LinearLayout>
    </RelativeLayout>

</RelativeLayout>
2.樣式,基本上,百度上面搜尋到的樣式,都是這樣的,沒有什麼不同,也就是多幾個少幾個,都感覺無所謂,不要在上面花費太多的功夫了。。。
<style name="QrcodeTheme" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@null</item>
        <item name="android:backgroundDimEnabled">false</item>
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>

3.AndroidManifest.xml檔案中的佈置

<activity
            android:name=".consult.activity.Activity"
            android:screenOrientation="portrait"
            android:theme="@style/QrcodeTheme"
            android:windowSoftInputMode="stateHidden|adjustResize" />
其他的,個人覺得就沒什麼需要注意的地方了。。。。
-----------------------------------------------------------------------

下面是另外一個專案中,去掉黑角的實現方法,跟上面有一點不同,貼出來,做個對比吧。。。

1.樣式

<style name="MySearchTheme" parent="@android:Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

2.佈局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="1700dp"
    android:layout_height="740dp"
    android:background="@android:color/transparent" >

    <RelativeLayout
        android:id="@+id/oper_scre_cond"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/oper_pop_top_bg"
        android:paddingTop="20dp" >

        <Spinner
            android:id="@+id/oper_Hospital"
            android:layout_width="124dp"
            android:layout_height="38dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="30dp" />

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="30dp"
            android:layout_toRightOf="@id/oper_Hospital"
            android:text="@string/oper_name"
            android:textSize="30sp" />

        <EditText
            android:id="@+id/oper_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@id/name"
            android:background="@drawable/oper_name" />

        <TextView
            android:id="@+id/medical_record"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="30dp"
            android:layout_toRightOf="@id/oper_name"
            android:text="@string/medical_record"
            android:textSize="30sp" />

        <EditText
            android:id="@+id/oper_medical_record"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@id/medical_record"
            android:background="@drawable/oper_medical_record" />

        <Spinner
            android:id="@+id/oper_Modified_type"
            style="@android:attr/spinnerStyle"
            android:layout_width="164dp"
            android:layout_height="38dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="30dp"
            android:layout_toRightOf="@id/oper_medical_record" />

        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="30dp"
            android:layout_toRightOf="@id/oper_Modified_type"
            android:text="@string/oper_time"
            android:textSize="30sp" />

        <TextView
            android:id="@+id/oper_time_start"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@id/time"
            android:background="@drawable/oper_name"
            android:gravity="center_vertical|center_horizontal" />

        <TextView
            android:id="@+id/Horizontal_bar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@id/oper_time_start"
            android:text="@string/horizontal_bar"
            android:textSize="30sp" />

        <TextView
            android:id="@+id/oper_time_end"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@id/Horizontal_bar"
            android:background="@drawable/oper_name"
            android:gravity="center_vertical|center_horizontal" />

        <ImageButton
            android:id="@+id/oper_query"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="30dp"
            android:layout_toRightOf="@id/oper_time_end"
            android:background="@drawable/oper_query" />
    </RelativeLayout>

    <ImageButton
        android:id="@+id/oper_return"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_margin="10dp"
        android:background="@drawable/oper_close" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/oper_scre_cond"
        android:background="@drawable/oper_pop_bottom_bg"
        android:paddingTop="30dp" >

        <LinearLayout
            android:id="@+id/data_format_linear"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="238dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="30dp"
                android:ellipsize="end"
                android:singleLine="true"
                android:text="@string/oper_name"
                android:textSize="30sp" />

            <TextView
                android:layout_width="238dp"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:singleLine="true"
                android:text="@string/medical_record"
                android:textSize="30sp" />

            <TextView
                android:layout_width="180dp"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:singleLine="true"
                android:text="@string/hospital_state"
                android:textSize="30sp" />

            <TextView
                android:layout_width="180dp"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:singleLine="true"
                android:text="@string/oper_style"
                android:textSize="30sp" />

            <TextView
                android:layout_width="298dp"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:singleLine="true"
                android:text="@string/modify_content"
                android:textSize="30sp" />

            <TextView
                android:layout_width="238dp"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:singleLine="true"
                android:text="@string/operator"
                android:textSize="30sp" />

            <TextView
                android:layout_width="298dp"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:singleLine="true"
                android:text="@string/operator_time"
                android:textSize="30sp" />
        </LinearLayout>

        <View
            android:id="@+id/oper_view_1"
            android:layout_width="wrap_content"
            android:layout_height="1dp"
            android:layout_below="@id/data_format_linear"
            android:layout_marginTop="5dp"
            android:background="@drawable/oper_first_dividing" />

        <TextView
            android:id="@+id/oper_Remind"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/oper_view_1"
            android:layout_centerHorizontal="true"
            android:text="沒有資料"
            android:textSize="50sp"
            android:visibility="gone" />

        <ListView
            android:id="@+id/oper_lv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/oper_view_1"
            android:layout_marginTop="5dp"
            android:divider="@drawable/oper_dividing" />
    </RelativeLayout>

</RelativeLayout>

3.AndroidManifest.xml檔案中的配置
<activity
            android:name="com.sinldo.yicard.OperationQueryActivity"
            android:screenOrientation="landscape"
            android:theme="@style/MySearchTheme"
            android:windowSoftInputMode="stateUnchanged|adjustPan" />

好了,這裡總共有兩套實現方式,供參考吧。。。

這兩套方式,在兩個專案裡面都實現了去掉黑角,以及圓角背景,可以選擇的來。。。