小编Gre*_*ggz的帖子

NavigationPage Wrapping导致状态栏中的错误

当我尝试添加Navigation到我的时候,我遇到了一个奇怪的错误CropsListPage

<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
       xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
       xmlns:local="clr-Balloney.Views"
       x:Class="Balloney.Views.MainPage">

   <NavigationPage Icon="carrot.png">
    <x:Arguments>
        <local:CropListPage/>
    </x:Arguments>
   </NavigationPage> 
   <ContentPage Icon="search.png"></ContentPage>

 </TabbedPage>
Run Code Online (Sandbox Code Playgroud)

然后它导致..

在此输入图像描述

如果我不试图将它包裹在一起NavigationPage,它就会保持正常

在此输入图像描述

知道是什么导致了这种行为吗?在尝试克服我的方式并硬编码Android中状态栏的大小之前,我正在寻找一种方法来理解问题并防止它.谢谢

MainPage.xaml 现在工作

<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
           xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
           xmlns:local="clr-namespace:Balloney.Views"
           x:Class="Balloney.Views.MainPage">

  <local:CropListPage Icon="carrot.png"/>
  <ContentPage Icon="search.png"></ContentPage>

</TabbedPage>
Run Code Online (Sandbox Code Playgroud)

CropListxaml

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="Balloney.Views.CropListPage">
<ListView ItemsSource="{Binding CropsList}" ItemTapped="OnCropTapped">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout Orientation="Horizontal">
                    <Image Source="{Binding ImageUrl}" VerticalOptions="Fill" WidthRequest="50"/>
                    <StackLayout HorizontalOptions="StartAndExpand">
                        <Label Text="{Binding Specie.Name}"/>
                        <Label Text="{Binding HarvestDate}" FontSize="Micro" TextColor="Black"/>
                    </StackLayout>
                    <Label Text="{Binding Location}" FontSize="Micro" TextColor="Chocolate" …
Run Code Online (Sandbox Code Playgroud)

navigation xaml xamarin.forms

10
推荐指数
1
解决办法
236
查看次数

在Oreo中没有持续通知的情况下,whatsapp和即时消息应用程序如何在后台运行?

我在stackoverflow和Android文档上学到了什么.最后我得出结论:

无法为连续任务创建后台服务.如果我真的想要一个服务,我应该启动一个前台服务,用户不断看到一个持久的通知"应用程序正在运行".无法隐藏此通知.它是由谷歌有意添加的.是的,还有其他选项,如WorkManagerJobScheduler, 但它们确实定期不连续工作.

我想要的是构建一个即时消息应用程序,它使用xmpp或套接字连续连接到服务器.但它需要连续的连接,但我不想使用前台服务,因为它向用户显示一个恼人的通知"应用正在运行".

问题1: Whatsapp和其他即时消息应用程序如何持续连接到服务器但不显示持久通知?他们是如何做到这一点的?

问题2:如果Whatsapp使用FCM进行通知,那么它也适用于那些没有安装playservices的手机,那么Whatsapp通知机制如何运作?

java android

9
推荐指数
1
解决办法
746
查看次数

FxFlex Calc 设置最小高度,而原始值设置最大高度

<div fxFill fxLayout="column">
    <div fxFlex="8" fxLayout="column"> Fixed Header </div>
    <div fxFlex="20" fxLayout="row" [fxHide]="isShow"> Colapsable Header </div>
    <div fxFlex="72" fxLayout="column"> Page content </div>
</div>
Run Code Online (Sandbox Code Playgroud)

像这样,如果我隐藏标题,页面的20%保持空白,导致包含页面内容的div仍然只占据72%

但是如果我使用 with calc <div fxFlex="calc(92% - 20%)">,这个各自的 div 会根据上面的 div 是隐藏还是显示来修改她的高度,所以即使 div 被折叠起来也永远不会有空白空间..

为什么它会这样工作?calc(92% - 20%) 它总是 72%,那么为什么它的行为不同呢?

编辑问题标题后的更多上下文:

在观察生成的 Html 后,我收集到了

  • fxFlex="72" 设置一个 max-height="72%"
  • fxFlex="calc(92%-20%)"min-height="72%"

flexbox angular-flex-layout angular

8
推荐指数
1
解决办法
105
查看次数

房间如何转换自定义对象

我是 Room 的新手,我不明白我应该怎么做。我有一个实体Movie和另一个实体称为ÙpcomingMovies.

    @Entity
    public class Movie {

        @PrimaryKey
        @NonNull
        public String id;

        @ColumnInfo
        public String name;

        @ColumnInfo
        public String title;
    }

    @Entity
    public class UpcomingMovies {

        @PrimaryKey(autoGenerate = true)
        public int id;

        @ColumnInfo
        public Movie movie;
    }
Run Code Online (Sandbox Code Playgroud)

所以我已经知道 Room 在转换对象时有问题,但我仍然没有看到如何使用TypeConverter. 可能我把事情复杂化了,但有人可以帮我解决这个问题吗?我什至不确定我的 UpcomingMovies 表是否制作精良。

欣赏它

android android-room

7
推荐指数
1
解决办法
2052
查看次数

未调用 LiveData 观察()

我的观察者回调没有被调用,你能指出我做错了什么吗?我的应用程序非常简单,因为我只是在测试这个架构

主活动代码

viewModel = ViewModelProviders.of(this).get(UpcomingMoviesViewModel.class);
viewModel.getUpcomingMovies().observe(this, upcomingMovies -> {
        // NOT CALLED !!!
        for(UpcomingMovies movie : upcomingMovies) {
            Log.d("Upcoming", "Movie - " + movie.movie.title);
        }
    });
Run Code Online (Sandbox Code Playgroud)

视图模型代码

private LiveData<List<UpcomingMovies>> mUpcomingMovies;
private MovieRepository movieRepository;

public UpcomingMoviesViewModel(@NonNull Application application ) {
    super(application);
    movieRepository = MovieRepository.getsInstance(application); 
}

public LiveData<List<UpcomingMovies>> getUpcomingMovies() {
    mUpcomingMovies = movieRepository.getUpcomingMovies();
    return mUpcomingMovies;
}
Run Code Online (Sandbox Code Playgroud)

还有我的存储库方法

public LiveData<List<UpcomingMovies>> getUpcomingMovies(){
    if(movieDao.loadUpcomingMovies().getValue() == null) {
        webService.getUpcomingMovies(api_key).
                enqueue(new Callback<MovieResults>() {

                    @Override
                    public void onResponse(Call<MovieResults> call, Response<MovieResults> response) {
                        MovieResults results = response.body();
                        if(results == …
Run Code Online (Sandbox Code Playgroud)

android dao android-room android-livedata

7
推荐指数
1
解决办法
7852
查看次数