Android 以Dialog的方式顯示Activity,並且處理背景四個角為圓角,去掉黑角
阿新 • • 發佈:2019-01-23
將Activity以Dialog的方式顯示出來,並不難,只需要在AndroidManifest.xml檔案中配置一下就可以了。
把背景設定成圓角也不是很難,可以自己處理,亦可以直接是背景圖。。。
在我看來,最難得是去掉黑角。黑角是怎麼來的咧?
Activity預設的背景是黑色的,不透明的,當你把背景設定成別的顏色,並且設定成圓角後,Activity本身所佔有的空間,是包含了圓角的一個正方形,或者長方形,顯示出來的圓角,在我看來,就是把最上面顯示的為圓角,最下面的為黑色的正方形,當設定圓角,多出來的部分顯示為黑色,就出現了所謂的黑角。。。
在網上找了很多的方法,也忘記了哪種方式成功的設定成了圓角,並且隱藏掉了黑角,現在就根據我自己的看法,來總結一下吧。。。
1.首先是佈局檔案。這裡,千萬不要給最外面的父容器新增背景,如果添加了,那麼黑角怎麼都隱藏不掉了。也許你的黑角也隱藏不掉,看看這裡吧,可以試試。。。
這個部落格,主要記錄的就是這裡,不要給最外面的父容器新增背景。。。
2.樣式,基本上,百度上面搜尋到的樣式,都是這樣的,沒有什麼不同,也就是多幾個少幾個,都感覺無所謂,不要在上面花費太多的功夫了。。。<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>
<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" />
好了,這裡總共有兩套實現方式,供參考吧。。。
這兩套方式,在兩個專案裡面都實現了去掉黑角,以及圓角背景,可以選擇的來。。。