2014-11-07 6 views
5

Ich möchte eine Popup-Box wie Facebook Android-App, die beim Drücken der Schaltfläche Kommentare öffnet. Ich möchte die gleiche Art von Pop-up für meine Anwendung entwerfen. Kann jemand mich wissen lassen, wie es gebaut werden kann oder mich nur leiten, was die Voraussetzung ist, um diese Art von Sache zu entwerfen.Wie erstellt man einen Facebook-Kommentar wie Popup in Android?

Danke.

+1

Use Custom Dialog. –

+0

Verwenden Sie diese http://stackoverflow.com/questions/13341560/how-to-create-a-custom-dialog-box-in-android und 'edittext' im Dialogfeld –

+0

Danke für den Vorschlag. –

Antwort

7

Sie es durch

PopupWindow

Hier ist das Verfahren des Aufrufs Popup-Fenster über Aktivität oder ein Fragment erreichen können. Facebook mit Rebound Library für tolle Swing-Animationen. Dafür habe ich normale XML-Animationsdateien verwendet.

popup_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:id="@+id/headerLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="?attr/actionBarSize" 
     android:orientation="horizontal" 
     android:layout_alignParentTop="true" 
     android:gravity="center"> 

     <TextView 
      android:layout_gravity="center" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Some One and 20 Others Like this" 
      android:textColor="@color/black" 
      android:textStyle="bold" 
      android:layout_margin="5dp"/> 
    </LinearLayout> 

    <ListView 
     android:id="@+id/commentsListView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/headerLayout" 
     android:layout_above="@+id/comment_section" 
     android:layout_marginBottom="0dp"/> 

    <LinearLayout 
     android:id="@+id/comment_section" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="50dp" 
     android:layout_alignParentBottom="true" 
     android:layout_marginBottom="5dp" 
     android:orientation="horizontal" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:gravity="center" 
     > 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:maxHeight="30dp" 
      android:minHeight="20dp" 
      android:layout_gravity="center" 
      android:src="@mipmap/ic_launcher" 
      /> 
     <EditText 
      android:id="@+id/writeComment" 
      android:hint="Write a Comment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:maxLines="2" 
      android:focusable="true" 
      android:layout_marginLeft="2dp" 
      android:textSize="12sp" 
      android:textColor="@color/black" 
      android:background="#00000000"/> 

    </LinearLayout> 

</RelativeLayout> 

Popup-Animation in style.xml

<!-- PopuP Enter Exit Animation --> 
    <style name="PopupAnimation" parent="Widget.AppCompat.PopupWindow"> 
     <item name="android:windowEnterAnimation">@anim/bottom_up</item> 
     <item name="android:windowExitAnimation">@anim/bottom_down</item> 
    </style> 

Java-Methode PopUpWindow

// call this method when required to show popup 
    public void onShowPopup(View v){ 

     LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     // inflate the custom popup layout 
     inflatedView = layoutInflater.inflate(R.layout.popup_layout, null,false); 
     // find the ListView in the popup layout 
     ListView listView = (ListView)inflatedView.findViewById(R.id.commentsListView); 
     LinearLayout headerView = (LinearLayout)inflatedView.findViewById(R.id.headerLayout); 
     // get device size 
     Display display = getWindowManager().getDefaultDisplay(); 
     final Point size = new Point(); 
     display.getSize(size); 
//  mDeviceHeight = size.y; 
     DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics(); 
     int width = displayMetrics.widthPixels; 
     int height = displayMetrics.heightPixels; 


     // fill the data to the list items 
     setSimpleList(listView); 


     // set height depends on the device size 
     popWindow = new PopupWindow(inflatedView, width,height-50, true); 
     // set a background drawable with rounders corners 
     popWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.popup_bg)); 

     popWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); 
     popWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); 

     popWindow.setAnimationStyle(R.style.PopupAnimation); 

     // show the popup at bottom of the screen and set some margin at bottom ie, 
     popWindow.showAtLocation(v, Gravity.BOTTOM, 0,100); 
} 

Methode für das Hinzufügen Liste in das Layout

nennen

Animationsdatei bottom_up.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromYDelta="75%p" android:toYDelta="0%p" 
     android:fillAfter="true" 
     android:duration="400"/> 
</set> 

bottom_down.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate android:fromYDelta="0%p" android:toYDelta="100%p" android:fillAfter="true" 
     android:interpolator="@android:anim/linear_interpolator" 
     android:duration="400" /> 

</set> 
+0

danke Mann, ich mag Ihre Implementierung, aber können Sie mit dem swip to disdis helfen? – suulisin

+0

@Pamparanpa hast du irgendeine Lösung gefunden, um Popup durch Wischen nach unten zu entfernen? – Dharmishtha

Verwandte Themen