2
나는 내 사용자 정의 탭 컨트롤을 구현하고 있지만 스크롤 된 탭을 만들기 위해 가로 모드에서 scrollview를 사용하는 문제가 발생했습니다. 현재 스크롤바가 나타납니다. 그러나 이것을 숨기고 탭 컨트롤을 안드로이드와 동일하게 만들고 싶습니다. . 직접적인 해결책이 있습니까?scrollview xamarin 폼에서 스크롤 막대를 숨기는 방법은 무엇입니까?
나는 내 사용자 정의 탭 컨트롤을 구현하고 있지만 스크롤 된 탭을 만들기 위해 가로 모드에서 scrollview를 사용하는 문제가 발생했습니다. 현재 스크롤바가 나타납니다. 그러나 이것을 숨기고 탭 컨트롤을 안드로이드와 동일하게 만들고 싶습니다. . 직접적인 해결책이 있습니까?scrollview xamarin 폼에서 스크롤 막대를 숨기는 방법은 무엇입니까?
나는 직접 해결책이 없다고 생각합니다. 기본 스크롤 뷰 렌더러를 확장하여 사용자 정의 렌더러를 만들어야합니다. 제가 한 일은 당신의 목적을 달성하기를 바랍니다.
안드로이드 특정 코드 :
[assembly: ExportRenderer(typeof(Xamarin.Forms.ScrollView), typeof(ResponsiveFramework.Droid.ScrollViewEXRenderer))]
namespace ResponsiveFramework.Droid
{
public class ScrollViewEXRenderer : ScrollViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (e.OldElement != null || this.Element == null)
{
return;
}
if (e.OldElement !=null)
{
e.OldElement.PropertyChanged -= OnElementPropetyChanged;
}
e.NewElement.PropertyChanged += OnElementPropetyChanged;
}
private void OnElementPropetyChanged(object sender, PropertyChangedEventArgs e)
{
if (ChildCount > 0)
{
GetChildAt(0).HorizontalScrollBarEnabled = false;
}
}
}
}
아이폰 OS 특정 코드 :
[assembly: ExportRenderer(typeof(Xamarin.Forms.ScrollView), typeof(ResponsiveFramework.iOS.ScrollViewEXRenderer))]
namespace ResponsiveFramework.iOS
{
public class ScrollViewEXRenderer : ScrollViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
var result = this.Element.GetValue(ScrollViewPoperty.HorizontalScrollBarVisibleProperty);
bool IsHorizontalScrollBarVisible = Convert.ToBoolean(result);
if (IsHorizontalScrollBarVisible == false)
{
if (e.OldElement != null || this.Element == null)
{
return;
}
if (e.OldElement != null)
{
e.OldElement.PropertyChanged -= OnElementPropertyChanged;
}
e.NewElement.PropertyChanged += OnElementPropertyChanged;
}
}
private void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
this.ShowsHorizontalScrollIndicator = false;
}
}
}
은 다음과 같습니다 안드로이드에만 적용됩니다. 문제는 Xamarin 양식 (태그의 다른 대상 포함)에 대한 것이 었습니다. - 이것을 다른 목표에도 사용하는 것에 대한 대답에 더 많은 세부 사항을 추가 할 수 있습니까? - 적어도 이것을 연결하는 방법에 대한 링크는 충분합니다 (예 : 스크롤 막대를 제거하려는 컨트롤에서 사용하도록 XAML에서 뭔가를해야합니까?) – BrainSlugs83
@ BrainSlugs83 IOS 렌더러 용 코드를 추가했습니다. Xaml에서 아무 일도하지 않고 연결하려면 사용하려는 컨트롤에 대한 렌더러를 내 보내면됩니다. 위 샘플에서 보여지는 것처럼. –
@ BrainSlugs83 https://github.com/veloxcore/Xamstrap src 폴더에서 saample을 찾을 수 있습니다. –