Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 如何创建可隐藏的底部视图_Xamarin.forms_Slider_Controls_Audio Streaming_Drawer - Fatal编程技术网

Xamarin.forms 如何创建可隐藏的底部视图

Xamarin.forms 如何创建可隐藏的底部视图,xamarin.forms,slider,controls,audio-streaming,drawer,Xamarin.forms,Slider,Controls,Audio Streaming,Drawer,我开发了一个包含4个选项卡的Xamarin.Forms.Shell应用程序 我想添加一个基本音频播放器,允许播放来自流媒体源的音乐 但我正在寻找最好的管理方法: 我不想在专门的页面上显示它,因为我没有音频的元数据(没有相册照片,没有标题,没有作者,…),也没有“播放下一个”或“播放上一个”功能 我想在主页的底部和上方显示一个基本视图,包含3个按钮(播放或暂停/停止/关闭)和收音机的名称 我想这样做: 但我不知道实现这一目标的更好方法是什么: 使用类似的抽屉 使用类似的幻灯片 使用类似的工

我开发了一个包含4个选项卡的Xamarin.Forms.Shell应用程序

我想添加一个基本音频播放器,允许播放来自流媒体源的音乐

但我正在寻找最好的管理方法:

  • 我不想在专门的页面上显示它,因为我没有音频的元数据(没有相册照片,没有标题,没有作者,…),也没有“播放下一个”或“播放上一个”功能
  • 我想在主页的底部和上方显示一个基本视图,包含3个按钮(播放或暂停/停止/关闭)和收音机的名称
我想这样做:

但我不知道实现这一目标的更好方法是什么:

  • 使用类似的抽屉
  • 使用类似的幻灯片
  • 使用类似的工作表

所有这些解决方案对于我的需求来说都太复杂了


还有其他方法吗?

这是我实施的解决方案

默认情况下,我显示一个浮动操作按钮,该按钮将显示无线电播放器控制面板

在这个面板中,我有“播放”/“停止”控件,收音机标题,还有一个“关闭”按钮来隐藏面板

默认情况下,通过应用
TranslationY

XAML如下所示:

<Grid>
    <!-- FloatingActionButton -->
    <yummy:PancakeView x:Name="RadioFab"
                CornerRadius="28"                       
                Padding="16"
                BackgroundColor="{StaticResource AccentColor}"
                VerticalOptions="End"
                HorizontalOptions="End"
                Margin="25">
        <yummy:PancakeView.Shadow>
            <yummy:DropShadow Offset="1,2"
                              Color="{StaticResource Gray-Black}"
                              BlurRadius="2"
                              Opacity="0.2"/>
        </yummy:PancakeView.Shadow>
        <Image HeightRequest="24" WidthRequest="24">
            <Image.Source ... />
        </Image>
        <yummy:PancakeView.GestureRecognizers>
            <TapGestureRecognizer Tapped="RadioFab_Clicked" />
        </yummy:PancakeView.GestureRecognizers>
    </yummy:PancakeView>
    <!-- Radio player view
    <yummy:PancakeView x:Name="RadioPlayerView"
                       VerticalOptions="End"
                       HeightRequest="56"
                       BackgroundColor="{StaticResource Gray-400}"
                       Opacity="0.9"
                       TranslationY="56"
                       IsVisible="True">
       <!-- content ... -->
    </yummy:PancakeView>
<Grid>
private void RadioFab_Clicked(object sender, EventArgs e)
{
    this.RadioFab.ScaleTo(0, easing: Easing.Linear);
    this.RadioPlayerView.TranslateTo(0, 0, 300);
}

void Player_CloseButton_Clicked(System.Object sender, System.EventArgs e)
{
    this.RadioPlayerView.TranslateTo(0, 56, 300);
    this.RadioFab.ScaleTo(1, easing: Easing.SpringOut);
}

“所有这些解决方案似乎都太复杂了”可能是因为你想要实现的事实上是复杂的。你试过了吗?在你提到的3种方法中,有什么不符合你的要求?也许是的。。。在屏幕底部隐藏/显示视图似乎并不复杂,但我没有找到一个简单的方法来实现它。这就是为什么我更愿意问:也许有人已经做了,或者可能有想法……底部标签的想法是,它必须是一种简单的方式,用户可以轻松访问应用程序的不同部分。它们在每个平台上本机工作,因此如果你想隐藏它们,你必须用自定义渲染器弄脏你的手,或者你可以尝试在xamarin表单上实现它,但你必须在每个按钮点击时自己导航。@FabriBertani问题集中在底部选项卡上方的可折叠/可隐藏视图上,而不是底部标签本身。三种回购协议中有一种对你有效吗?(从复杂性的角度来看)。你想要复杂的东西,必须是同样复杂的解决方案。您可以开始实现一个,如果您有问题,请发布特定的问题。我最终通过使用框架和转换实现了一个基本/简单的解决方案。