首页>Program>source

我有一个带有自定义ViewCell的ListView,用于显示文章.但是,当您选择一个项目时,它会显示材料设计的波纹/选择效果.

Xaml:

  <ListView HasUnevenRows="True" ItemsSource="{Binding NewsArticles}" IsPullToRefreshEnabled="True">
        <ListView.ItemTemplate>
          <DataTemplate>
            <ViewCell>
              <StackLayout Padding="10">
                <Label Text="{Binding Title}" HorizontalOptions="Center" FontAttributes="Bold" />
                <Image Source="{Binding ImageUrl}" IsVisible="{Binding HasImage}" />
                <Label Text="{Binding Content}"></Label>
              </StackLayout>
            </ViewCell>
          </DataTemplate>
        </ListView.ItemTemplate>
      </ListView>

如何消除波纹效果?

最新回答
  • 2天前
    1 #

    因此,我们很长一段时间都想通了,您可以使用自定义渲染器来实现.

    首先,创建一个名为 no_selector.xml的文件 并将其放置在Resources / layouts文件夹中(包装属性必须设置为AndroidResource)。

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:state_window_focused="false" android:drawable="@android:color/transparent"/>
    </selector>
    

    之后,为ListView组件创建一个自定义渲染器,

    [assembly: ExportRenderer (typeof(ListView), typeof(NoRippleListViewRenderer))]
    namespace Your.Own.Namespace
    {
        public class NoRippleListViewRenderer : ListViewRenderer
        {
            protected override void OnElementChanged (ElementChangedEventArgs<ListView> e)
            {
                base.OnElementChanged (e);
                Control.SetSelector (Resource.Layout.no_selector);
            }
        }
    }
    

    如果是 no_selector 找不到文件来重建您的项目!

    请注意,这消除了 all的涟漪 应用程序中的ListViews.如果只希望它以一对夫妇为目标,则可以更改ExportRenderer属性的第一种类型(这确实要求您制作一个扩展ListView的单独的类)。

    https://gist.github.com/awatertrevi/d83787dbbf3de6ef0e0a344169d3c2fa

  • 2天前
    2 #

    我认为您可以在不使用自定义渲染器的情况下将其删除。

    您可以设置 BackgroundColor 你的 StackPanel 变成灰色或列表或页面背景的颜色.

    <ListView HasUnevenRows="True" ItemsSource="{Binding NewsArticles}" IsPullToRefreshEnabled="True">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout Padding="10" BackgroundColor="Gray">
                        <!-- ... --> 
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    

    或者您可以使用android样式更改列表视图样式:

    AndroidManifest.xml中设置主题

    <application android:label="$safeprojectname$" android:theme="@style/myTheme"></application>
    

    styles.xml中创建主题

    <?xml version="1.0" encoding="utf-8" ?>
    <resources>
        <style name="myTheme" parent="@android:style/Theme.Material.Light">
            <item name="android:listViewStyle">@style/ListViewStyle.Light</item>
        </style>
        <style name="ListViewStyle.Light" parent="@android:style/Widget.ListView">
            <item name="android:listSelector">@android:color/transparent</item>
        </style>
    </resources>
    

  • javafx 2:当窗口调整大小时,如何避免SplitPane调整窗格之一的大小?
  • c#:通过反射获取MemberInfo的类型