启动“活动”时隐藏片段,单击时显示

时间:2016-10-02 13:57:59

标签: android android-layout android-fragments

我有MapActivity,当我点击infowindow时我必须在其上显示一个片段。启动MapActivity时,我不希望片段可见。当我点击infoWindow时,我希望片段出现。

MapActivity.java

public void onInfoWindowClick(Marker marker) {

    android.app.FragmentManager fragmentManager = getFragmentManager ();
    FragmentTransaction fragmentTransaction = fragmentManager
            .beginTransaction ();
    fragmentOnMap = new FragmentOnMap();
    fragmentOnMap.setSpecialText("Hello Fragment");
    fragmentTransaction.add(R.id.fragmentinmap,fragmentOnMap);
    fragmentTransaction.commit();
}

MapActivity布局文件

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.ather.healthapp.MapActivity" />

<FrameLayout
    android:id = "@+id/fragmentinmap"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:background="#fefeff"
    android:orientation="vertical"
    android:layout_gravity="bottom"
    android:translationY="400dp"
/>
</FrameLayout> 

片段活动

public class FragmentOnMap extends Fragment {

String specialText;
//public FrameLayout frameLayout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_map, container, false);
    TextView textView= (TextView) rootView.findViewById (R.id.fragmen_title);
    textView.setText (specialText);
    return rootView;
}

和片段布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:padding="10dp">

<TextView
    android:id="@+id/fragmen_title"
    android:layout_width="300dp"
    android:layout_height="300dp"

    android:textSize="20dp" />

<Button
    android:id="@+id/TakeTest"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Test" />

</LinearLayout>

启动MapActivity时,不会显示片段,这很好。但是当我点击InfoWindow时,它并没有显示出来。我现在不想要任何动画。只需在我点击外面时显示片段并隐藏即可。

我们将不胜感激。

修改

经过深入研究后,我将slide_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="500"/>
</set>

我想我现在必须调用一些动画

 Animation slideup = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_up);

但在哪里?在onInfoWindow方法?我如何开始那里

0 个答案:

没有答案