2017-10-04 11 views
1

크로스 플랫폼 앱에 Xamarin 양식을 사용하고 있으며 기본 UI는 탭 페이지이며 페이지 중 하나에 segmented control 세그먼트 컨트롤이 있습니다 목록보기 컨트롤의 데이터를 전환합니다. 문제는 화면을 스 와이프 할 때 탭 페이지의 여러 하위 페이지간에 전환되지만 자식 페이지 내부의 세그먼트 컨트롤을 전환하고 싶습니다. 어쨌든 나는 탭이있는 페이지에서 스 와이프하지 못하게 할 수 있습니까? 안쪽 세그먼트 컨트롤? 탭 페이지에 대한탭 페이지 하위 페이지의 세그먼트 컨트롤 내에서 스 와이프 동작 전달

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:MainApp" 
     x:Class="MainApp.MainPage"> 
    <!--Pages can be added as references or inline--> 
    <local:NewsPage Title="News" Icon="icon.png"/> 
    <ContentPage Title="Guides" Icon="icon.png"/> 
    <ContentPage Title="Wallets" Icon="icon.png"/> 
    <ContentPage Title="Me" Icon="icon.png"/> 
</TabbedPage> 

뉴스 페이지 :

<controls:SegmentedControl x:Name="SegControl" TintColor="#007AFF" SelectedSegment="0" 
             VerticalOptions="Center" 
             Grid.Column="1" ValueChanged="SegControl_ValueChanged"> 
    <controls:SegmentedControl.Children> 
     <controls:SegmentedControlOption Text="Type1" /> 
     <controls:SegmentedControlOption Text="Type2" /> 
    </controls:SegmentedControl.Children> 
</controls:SegmentedControl> 
<ListView ItemsSource="{Binding Source={StaticResource SArray}}" Grid.Row="1" Grid.Column="0" RowHeight="85"> 
<ListView.ItemTemplate> ... </ListView> 

effect

답변

1

내가이 걸릴 안드로이드에? iOS에서 작품을 스 와이프하는 것은 확실하지 않습니다.

한 가지 옵션은 탭 페이지에서 스 와이프를 사용 중지하는 것입니다.

사용자 정의 렌더러를 사용하여이 작업을 수행 할 수 있습니다. 이 지금 자 마린 양식에 추가 된 것처럼

[assembly: ExportRenderer(typeof(CustomTabbedPage), typeof(CustomTabbedPageRenderer))] 
namespace App1.Droid 
{ 
    public class CustomTabbedPageRenderer : TabbedPageRenderer 
    { 

     protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e) 
     { 

      var info = typeof(TabbedPageRenderer).GetTypeInfo(); 
      var fieldInfo = info.GetField("_useAnimations", BindingFlags.Instance | BindingFlags.NonPublic); 
      fieldInfo.SetValue(this, false); 
      base.OnElementChanged(e); 
     } 
    } 
} 

편집

가 보이는 :

https://github.com/xamarin/Xamarin.Forms/pull/409

ANOTHER 편집

그리고 또 다른 방법. 나는 오늘 많은 것을 배우고있다!

public partial class MainPage : Xamarin.Forms.TabbedPage 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 

     this.On<Xamarin.Forms.PlatformConfiguration.Android>().SetIsSwipePagingEnabled(false); 
    } 
} 

나는 XAML

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core" 
     android:TabbedPage.IsSwipePagingEnabled="False" 
+0

이 프로젝트는 자 마린 형태이다에서 롤

에있어하지만이 문제는 기본적으로 슬쩍이없는 안드로이드, IOS 탭 페이지에 있습니다. – fluter

+0

감사합니다. 코드를 추가했는데 이제는 세그먼트보기를 선택하기 위해 listview를 스 와이프하는 방법을 알아야합니다. :) – fluter