2012-03-16 31 views
1

我正在修改測試消息應用程序,我想添加的功能之一是,當收到文本消息時,某種類型的對話框會彈出文本消息,並且能夠快速回復它,而不必進入實際應用程序。以HandcentSMS爲例,這裏就是我說的:創建用於文本消息鏈接的對話鏈接彈出框HandcentSMS

Quick Text reply

任何想法如何去這樣做,或任何人都可以點我一個很好的方向,以獲得在這個開始的?

+0

'smspopup'做類似的東西,它是開源:code.google.com/p/android-smspopup/ – Macarse 2012-06-21 02:57:06

回答

5

你可以讓一個活動,並與自定義樣式風格也應該繼承Theme.Dialog 舉例風格:

<style name="Theme.MyDialog" parent="android:style/Theme.Dialog"> 
     <item name="android:windowBackground">@android:drawable/alert_light_frame</item> 
     <item name="android:textColorPrimary">@android:color/black</item> 
     <item name="android:textColor">@android:color/black</item>    
     <item name="android:overScrollMode">never</item> 
     <item name="android:windowNoTitle">true</item> 
</style> 

最重要的事情就是好好準備活動的XML佈局。 我建議WRAP_CONTENT垂直的所有東西,水平FILL_PARENT。

樣品佈局的xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:minWidth="280dp" 
    android:orientation="vertical"> 
    <LinearLayout 
     android:id="@+id/frg_alert_title" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 
     <TextView 
      android:id="@android:id/title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:drawableLeft="@drawable/topbar_logo" 
      android:drawablePadding="10dp" 
      android:gravity="center_vertical" 
      android:padding="10dp" 
      android:text="Title"/> 
     <View 
      android:layout_width="fill_parent" 
      android:layout_height="2dp" 
      android:background="@android:drawable/divider_horizontal_bright"/> 
    </LinearLayout> 
    <FrameLayout 
     android:id="@+id/customPanel" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:visibility="gone"> 
     <FrameLayout 
      android:id="@+id/custom" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/> 
    </FrameLayout> 
    <ScrollView 
     android:id="@+id/messagePanel" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:fillViewport="true" 
     android:padding="10dp"> 
     <TextView 
      android:id="@android:id/message" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Some text"/> 
    </ScrollView> 
    <View 
     android:layout_width="fill_parent" 
     android:layout_height="2dp" 
     android:background="@android:drawable/divider_horizontal_bright"/> 
    <LinearLayout 
     android:id="@+id/frg_alert_three_buttons" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:padding="5dp" 
     android:visibility="gone" 
     android:weightSum="3"> 
     <Button 
      android:id="@+id/button_positive" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="5dp" 
      android:layout_weight="1" 
      android:maxLines="2" 
      android:minLines="2" 
      android:text="Button"/> 
     <Button 
      android:id="@+id/button_neutral" 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:maxLines="2" 
      android:text="Button"/> 
     <Button 
      android:id="@+id/button_negative" 
      style="?android:attr/buttonStyle" 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_marginLeft="5dp" 
      android:layout_weight="1" 
      android:maxLines="2" 
      android:text="Button"/> 
    </LinearLayout> 
    <LinearLayout 
     android:id="@+id/frg_alert_two_buttons" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:padding="@dimen/screenPadding" 
     android:weightSum="2"> 
     <Button 
      android:id="@+id/button_positive" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:maxLines="2" 
      android:minLines="2" 
      android:text="Button"/> 
     <Button 
      android:id="@+id/button_negative" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="5dp" 
      android:layout_weight="1" 
      android:maxLines="2" 
      android:minLines="2" 
      android:text="Button"/> 
    </LinearLayout> 
</LinearLayout> 
3

用於創建此UI剛剛創建背景的活動透明爲:

步驟1:添加RES \值\ style.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="Theme.Smspopuptheme" parent="android:style/Theme.Translucent"> 
<item name="android:windowNoTitle">true</item> 
<item name="android:windowContentOverlay">@null</item> 
<item name="android:backgroundDimEnabled">true</item> 
<item name="android:background">@android:color/transparent</item> 
</style> 
</resources> 

第2步:將主題添加到AndroidManifest.xml中進行的活動核苷酸,以顯示與消息:

<activity 
    android:label="@string/app_name" 
    android:theme="@style/Theme.D1NoTitleDim" 
    android:name=".SmspopuptestActivity" > 
    <intent-filter > 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

步驟3:在SmspopuptestActivity.java設置FEATURE_NO_TITLEsetContentView如前:

this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    //Remove notification bar 
    //this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.main); 

步驟4:你的動態佈局看起來像res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#55000000" 
    android:gravity="center" 
    android:orientation="horizontal" > 
    <LinearLayout 
     android:id="@+id/frg_alert_buttons" 
     android:layout_width="fill_parent" 
     android:layout_height="200dp" 
     android:layout_marginLeft="15dp" 
     android:layout_marginRight="15dp" 
     android:background="@android:color/darker_gray" 
     android:gravity="center" 
     android:padding="5dp" 
     android:layout_centerInParent="true" 
     android:weightSum="3"> 
    </LinearLayout> 
</LinearLayout> 

添加您的佈局元素frg_alert_buttons根據您的需要喜歡按鈕,Textviews,Imageview和EditViews。

開始SmspopuptestActivity.java當您收到新的SMS時的活動。

一些有用的資源:

android-listen-for-incoming-sms-messages

一些SOUCE CODE FOR SMSPOPUP Android中:

droid-notify

android-smspopup

showsms

smspopup-for-android

+0

正是我一直在尋找,將其添加爲啓動活動是一個很好的接觸太。謝謝! – Gmeister4 2015-12-28 22:26:17