如何在Android中的现有活动之上显示子视图?

时间:2010-06-03 14:54:17

标签: android popupwindow android-listview

我正在编写一个允许用户访问其企业语音邮件系统的应用程序。语音邮件显示在列表视图中,当选择一个语音邮件时,它们会被给予一个菜单。当用户选择“监听”时,我希望在现有ListView顶部的屏幕底部弹出一个小型媒体播放器(类似于软键盘在需要时如何出现,然后在完成时消失)。 / p>

选项?

1 个答案:

答案 0 :(得分:4)

将所有视图(即:您的ListView)添加到RelativeLayout,将媒体播放器布局元素放在底部,并将其可见性设置为已消失。

<RelativeLayout
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >

  <ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />

  <RelativeLayout
    android:id="@+id/mediaPopup"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" 
    android:visibility="gone"
    >
    <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="I am a media player!"
      />
  </RelativeLayout>

</RelativeLayout>

然后在您的活动课程中,您可以像这样在视图上制作动画:

function void showMediaPlayer() {

  if(mMediaPopUp.getVisibility() == View.GONE) {

    // Show Media Player
    TranslateAnimation mAnimUp = 
      new TranslateAnimation(
        Animation.RELATIVE_TO_SELF, 
        0, 
        Animation.RELATIVE_TO_SELF, 
        0, 
        Animation.RELATIVE_TO_SELF, 
        -(mMediaPopUp.getHeight()), 
        Animation.RELATIVE_TO_SELF, 
        0);

    mAnimUp.setStartOffset(500);
    mAnimUp.setDuration(500);

    mMediaPopUp.setVisibility(View.VISIBLE);
    mMediaPopUp.setAnimation(mAnimUp);

  }
}