我正在使用Xamarin Frorms
开发我的信使。我有一个用户交流的页面。在这里。
我的代码页XAML。
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Corporate_messenger.Service"
x:Class="Corporate_messenger.Views.CacheChatPage" Shell.BackgroundColor="#212D3B"
Shell.TitleColor="White" x:Name="set_pqage" Shell.TabBarIsVisible="True" Title="{Binding TitlePage}" >
<Shell.TitleView >
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding TitlePage}" FontSize="Medium" TextColor="White" VerticalOptions="Center" />
<Frame CornerRadius="8" HorizontalOptions="End" Grid.Row="0" Grid.Column="1" Margin="0,5,5,5" Padding="8" BackgroundColor="Transparent" HasShadow="True"
OutlineColor="Transparent" x:Name="MyFrame">
<StackLayout Orientation="Horizontal" HorizontalOptions="Center" >
<StackLayout.GestureRecognizers>
<TapGestureRecognizer x:Name="CallTap" Tapped="CallTap_Tapped" />
</StackLayout.GestureRecognizers>
<FlexLayout
Padding="3"
>
<Image Source="tCall.png"
FlexLayout.AlignSelf="Center"
WidthRequest="22"
HeightRequest="22"
>
</Image>
</FlexLayout>
</StackLayout>
</Frame>
</Grid>
</Shell.TitleView>
<ContentPage.Resources>
<ResourceDictionary>
<DataTemplate
x:Key="FromTemplate">
<ViewCell
x:Name="FromUserCell"
Tapped="FromUserCell_Tapped"
IsEnabled="True" >
<ViewCell.View >
<FlexLayout
JustifyContent="Start">
<Frame
VerticalOptions="Center"
BackgroundColor="#ECEDF1"
CornerRadius="14"
Padding="5,10,10,10"
HasShadow="false"
Margin="10,10,40,10">
<StackLayout
Orientation="Horizontal">
<Label
Text="{Binding Message}"
IsVisible="{ Binding IsMessageVisible, Mode=TwoWay}"
WidthRequest="200"
IsEnabled="True"
HorizontalTextAlignment="Start"
TextColor="Black"/>
<ImageButton
x:Name="LeftPlay"
Command="{Binding Source={x:Reference MyListView},Path=BindingContext.PlayAudioMessage}"
CommandParameter="{Binding .}"
Source="{Binding Path=SourceImage,Mode=TwoWay}"
IsVisible="{ Binding IsAuidoVisible, Mode=TwoWay}"
WidthRequest="35" HeightRequest="35"
CornerRadius="50"
BackgroundColor="#0986CE">
</ImageButton>
<Slider
x:Name="LeftSlider"
IsVisible="{Binding IsAuidoVisible, Mode=TwoWay}"
Maximum="{Binding MaximumSlider}"
Value="{Binding ValueSlider}"
IsEnabled="{Binding IsEnableSlider}"
MaximumTrackColor="Gray"
MinimumTrackColor="#41A9FE"
WidthRequest="150">
</Slider>
<StackLayout>
<Label
Text="{Binding Time_LstMessage}"
FontSize="11" MinimumWidthRequest="30"
VerticalTextAlignment="End"
HorizontalTextAlignment="End"
TextColor="DimGray"/>
</StackLayout>
</StackLayout>
</Frame>
</FlexLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
<DataTemplate
x:Key="ToTemplate">
<ViewCell
Tapped="ToUserCell_Tapped"
x:Name="ToUserCell"
IsEnabled="True">
<FlexLayout
JustifyContent="End" >
<Frame
CornerRadius="14"
BackgroundColor="#CCE4FF"
Padding="5,10,10,10"
Margin="50,10,20,10"
HasShadow="false"
IsClippedToBounds="True">
<StackLayout
Orientation="Horizontal">
<Label
Text="{Binding Message}"
IsVisible="{ Binding IsMessageVisible, Mode=TwoWay}"
WidthRequest="200"
IsEnabled="True"
HorizontalTextAlignment="Start"
TextColor="Black"/>
<ImageButton
x:Name="RightPlay"
Command="{Binding Source={x:Reference MyListView},Path=BindingContext.PlayAudioMessage}"
CommandParameter="{Binding .}"
Source="{Binding Path=SourceImage,Mode=TwoWay}"
IsVisible="{ Binding IsAuidoVisible, Mode=TwoWay}"
WidthRequest="35"
HeightRequest="35"
CornerRadius="50"
BackgroundColor="#0986CE">
</ImageButton>
<Slider
Maximum="{Binding MaximumSlider}"
Value="{Binding ValueSlider}"
IsEnabled="{Binding IsEnableSlider}"
IsVisible="{Binding IsAuidoVisible, Mode=TwoWay}"
WidthRequest="150"
MaximumTrackColor="Gray"
MinimumTrackColor="#41A9FE">
</Slider>
<Label
Text="{Binding Time_LstMessage}"
FontSize="11"
MinimumWidthRequest="30"
VerticalTextAlignment="End"
HorizontalTextAlignment="End"
TextColor="DimGray"/>
</StackLayout>
</Frame>
</FlexLayout>
</ViewCell>
</DataTemplate>
<local:ClassDataTemplateSelector
x:Key="chatDataTemplateSelector"
FromTemplate="{StaticResource FromTemplate}"
ToTemplate="{StaticResource ToTemplate}"/>
</ResourceDictionary>
</ContentPage.Resources>
<!--Страница сообщений-->
<ContentPage.Content>
<Grid RowSpacing="0" ColumnSpacing="0">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!--Список сообщений-->
<ListView
ItemTapped="MyListView_ItemTapped"
Grid.Row="0" Grid.Column="0"
IsRefreshing="{Binding IsRefreshing}"
RefreshCommand="{Binding UpdateList}"
ItemTemplate="{StaticResource chatDataTemplateSelector}"
ItemsSource="{Binding MessageList}"
Background="#1D2733"
IsPullToRefreshEnabled="True"
RefreshControlColor="Cyan"
Margin="0,0,0,0"
SeparatorColor="Transparent"
x:Name="MyListView"
HasUnevenRows="true"
>
</ListView>
<Grid
x:Name="GridInput"
ColumnSpacing="0" Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<!--Атрибут для написания сообщения-->
<Editor
Visual="Material"
Text="{Binding Input_message}"
Margin="5,0,0,0"
x:Name="MessageEditor"
Completed="MessageEditor_Completed"
TextChanged="MessageEditor_TextChanged"
Keyboard="Chat"
TextColor="Black"
Placeholder="Введите сообщение..."
Grid.Row="0"
Grid.Column="0">
</Editor>
<!--Кнопка отправить сообщение-->
<ImageButton
Command="{Binding SendMessage}"
CommandParameter="{Binding}"
Clicked="send_message_Clicked"
Grid.Row="0"
Grid.Column="1"
Source="send_msg.png"
BackgroundColor="Transparent"
WidthRequest="32" HeightRequest="32"
x:Name="send_message"
IsVisible="false"
/>
<!--Кнопка отправить голсовое сообщение-->
<ImageButton
Pressed="mic_message_Pressed"
Released="mic_message_Released"
Grid.Row="0"
Grid.Column="1"
Source="mic.png"
Padding="0"
BackgroundColor="Transparent"
WidthRequest="32"
HeightRequest="32"
x:Name="mic_message"
IsVisible="true"
Margin="0,0,10,0"/>
</Grid>
<ContentView x:Name="popupLoadingView" BackgroundColor="#C0808080" IsVisible="false" >
<Frame
Margin="10,0,10,10"
Padding="0"
CornerRadius="14"
BackgroundColor="White"
VerticalOptions="End" HorizontalOptions="Fill"
>
<StackLayout Margin="0" Padding="0" Spacing="0" VerticalOptions="Center" HorizontalOptions="Fill">
<StackLayout Orientation="Horizontal" Margin="0" x:Name="StackCopy" BackgroundColor="White" Padding="20,20,20,20" >
<StackLayout.GestureRecognizers>
<TapGestureRecognizer x:Name="Copy" Tapped="Copy_Tapped"/>
</StackLayout.GestureRecognizers>
<ImageButton Source="copyText.png" BackgroundColor="Transparent" WidthRequest="32" HeightRequest="32"></ImageButton>
<Label Text="Cкопировать" FontSize="Medium" VerticalOptions="Center" TextColor="Black" BackgroundColor="Transparent" ></Label>
</StackLayout>
<StackLayout Orientation="Horizontal" Margin="0" BackgroundColor="White" Padding="20,20,20,20" >
<StackLayout.GestureRecognizers>
<TapGestureRecognizer x:Name="DeleteTap" Tapped="DeleteTap_Tapped"/>
</StackLayout.GestureRecognizers>
<ImageButton Source="deleteM.png" BackgroundColor="Transparent" WidthRequest="32" HeightRequest="32"></ImageButton>
<Label Text="Удалить для всех" FontSize="Medium" VerticalOptions="Center" TextColor="Black" BackgroundColor="Transparent" ></Label>
</StackLayout>
</StackLayout>
</Frame>
</ContentView>
</Grid>
</ContentPage.Content>
</ContentPage>
当我写消息时,“编辑器”控件打开了。但是当我单击提交按钮时,编辑器控件又隐藏了。我如何使这个元素固定,以便用户决定何时关闭它。这是编辑器打开的照片。
1条答案
按热度按时间dxpyg8gm1#
在android中,你可以尝试下面的代码,它在我这边工作。
1.在MainActivity.cs中,加入下列程式码:
2.在android中创建
CustomEntryRenderer.cs
3.创建类
CustomEntry.cs
4.Usage: