如何使用GridLayoutManager使用RecyclerView设置列间距?在我的布局中设置边距/填充无效.
android gridview gridlayoutmanager recycler-adapter android-recyclerview
我知道,RecyclerView已经取代了旧的功能ListView和GridView.我正在寻找一个非常基本的例子,它显示了使用的最小网格设置RecyclerView.我不是在寻找长篇教程风格的解释,只是一个最小的例子.我想最简单的模仿旧GridView的网格将包含以下功能:
我正在尝试在gridview中显示8个项目.遗憾的是,gridview高度总是太小,所以它只显示第一行,而第二行的一小部分.
设置android:layout_height="300dp"使它工作.包装content,fill_parent显然不是.
我的网格视图:
<GridView
android:id="@+id/myId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:horizontalSpacing="2dp"
android:isScrollContainer="false"
android:numColumns="4"
android:stretchMode="columnWidth"
android:verticalSpacing="20dp" />
Run Code Online (Sandbox Code Playgroud)
我的物品资源:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:minHeight="?android:attr/listPreferredItemHeight" >
<ImageView
android:id="@+id/appItemIcon"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_dialog_info"
android:scaleType="center" />
<TextView
android:id="@+id/appItemText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="My long application name"
android:gravity="center_horizontal"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这个问题似乎与缺乏垂直空间有关.
我能做什么 ?
如何让GridView控件呈现<thead> <tbody>标签?我知道.UseAccessibleHeaders让它<th>代替<td>,但我不能让它<thead>出现.
我有一个从数据库填充的对象列表.如果列表为空,我需要显示错误消息,否则显示网格视图.
如何List<T>在C#中检查a 是否为空?
我想在文件位置的网格视图中显示缩略图图像.如何生成.jpeg文件?我正在使用C#语言asp.net.
我怎么能够:
这是代码:
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Id}" Width="40"/>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="100" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
感谢Kjetil,GridViewColumn.CellTemplate运行良好,自动宽度当然有效但是当使用长于列宽的数据更新ObservativeCollection"Collection"时,列大小不会自行更新,因此这只是一个解决方案.初始显示数据:
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Id}" TextAlignment="Right" Width="40"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="Auto" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}" Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud) 我希望能够在WPF ListView中的每个网格列的顶部隐藏标题.
这是我的ListView的XAML:
<Window x:Class="ListViewTest.Test0.ListViewTest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Empty ListView Grid" Height="216" Width="435" FlowDirection="LeftToRight" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.IsSharedSizeScope="False">
<Window.Resources>
<XmlDataProvider x:Key="CustomersDS" Source="C:\data.xml"/>
</Window.Resources>
<ListView Margin="0,0,0,50" ItemTemplate="{DynamicResource CustomerTemplate}" ItemsSource="{Binding Source={StaticResource CustomersDS}, XPath=/Customers/Customer}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding XPath=Code}"/>
<GridViewColumn DisplayMemberBinding="{Binding XPath=Name}"/>
<GridViewColumn DisplayMemberBinding="{Binding XPath=Country}"/>
</GridView>
</ListView.View>
</ListView>
</Window>
Run Code Online (Sandbox Code Playgroud)
我绑定的数据是:
<Customers>
<Customer>
<Code>1234</Code>
<Name>EPI</Name>
<Country>Sesame Street</Country>
</Customer>
<Customer>
<Code>3234</Code>
<Name>Paul</Name>
<Country>United Kingdom</Country>
</Customer>
<Customer>
<Code>3344</Code>
<Name>Juan</Name>
<Country>Spain</Country>
</Customer>
<Customer>
<Code>4321</Code>
<Name>Dodo</Name>
<Country>Mars</Country>
</Customer>
</Customers>
Run Code Online (Sandbox Code Playgroud) 我在Stackpanel里面有两个网格.第一个网格名为GridX.最初在网格内部有一个文本框的2D数组(RowDefs/ColumnDefs).XAML中的TextBox定义是
<TextBox x:Name="A1" Grid.Row="4" Grid.Column="5" TextAlignment="Center" />
Run Code Online (Sandbox Code Playgroud)
我希望以与GridX的一部分相同的位置以编程方式添加TextBlock.
效果必须是这样的
<TextBlock Grid.Row="4" Grid.Column="5"
HorizontalAlignment="Left" VerticalAlignment="Top" Text="10" FontSize="8"/>
Run Code Online (Sandbox Code Playgroud)
如何添加这个.我试过这个:
TextBlock tblock = new TextBlock();
GridX.SetColumn(tblock, cIndex);
GridX.SetRow(tblock, rIndex);
Run Code Online (Sandbox Code Playgroud)
但失败了.
我再试一次:
int rIndex = Grid.GetRow(txtBox);
int cIndex = Grid.GetColumn(txtBox);
TextBlock tblock = new TextBlock();
tblock.VerticalAlignment = VerticalAlignment.Top;
tblock.HorizontalAlignment = HorizontalAlignment.Left;
tblock.FontSize = 8;
tblock.Text = rc[i, j - 1];
Grid.SetColumn(tblock, cIndex);
Grid.SetRow(tblock, rIndex);
txtBox.MaxLength = 1;
Run Code Online (Sandbox Code Playgroud)
现在问题是TextBlock不可见.TextBox隐藏它.你能帮我吗
互联网上有很多解决方案试图填补WPF看似非常基本的遗漏.我真的很困惑什么是"最好"的方式.例如......我希望列标题中有小的向上/向下箭头来指示排序方向.显然有3种不同的方法可以做到这一点,有些使用代码,有些使用标记,有些使用标记加代码,而且所有看起来都像是黑客.
有没有人遇到这个问题,并找到了他们完全满意的解决方案?似乎奇怪的是,WPF缺少这样一个基本的WinForms功能,需要被黑客攻击.