Hal*_*ard 3 android-emulator xamarin.forms
该ListView在Xamarin.Forms有一个RowHeight特性,但似乎无论什么高度我将它设置为.
我使用Visual Studio 2013,我有Xamarin的商业版许可证,我使用Android模拟器MonoForAndroid_API_15,我相信我有所涉及的所有内容的最新版本.至今我无法运行iOS或WinPhone模拟器,所以我无法比较.这只是Android模拟器的一个问题,还是设置RowHeight属性不正确?
这是我继承的ContentPage(注意我设置RowHeight):
public class QuizzesPage : ContentPage
{
private readonly ListView _listView;
public QuizzesPage()
{
Title = "Test";
NavigationPage.SetHasNavigationBar(this, true);
_listView = new ListView {RowHeight = 20};
Content = _listView;
}
protected async override void OnAppearing()
{
base.OnAppearing();
_listView.ItemsSource = new[] {"One", "Two", "Three", "Four", "Five"};
}
}
Run Code Online (Sandbox Code Playgroud)
在App:
public class App
{
public static Page GetMainPage()
{
return new NavigationPage(new QuizzesPage());
}
}
Run Code Online (Sandbox Code Playgroud)
这是视觉效果:

请注意,我的代码是Xamarin使用的TODO示例的简化版本,您可以看到它们RowHeight以与我相同的方式设置属性.
无论我设置什么,因为RowHeight行具有相同的巨大高度.我能做什么?
编辑1:我计划本周升级到Windows 8.1,然后可以测试它在WinPhone上的外观.要在工作中将Mac添加到网络,我首先需要一些权限.这就是为什么我现在只能使用Android模拟器了.
编辑2:我尝试设置HasUnevenRows为true,如此处所示,但这只是让它接受更长的条目,而不是更改行的高度(或字体),这对我来说太大了.
编辑3:我发布了解决方案/解决方法作为答案.至少我可以完全控制细胞的高度.但RowHeight似乎没有做太多.
我有这个建议:
不确定RowHeight但尝试将ListView.HasUnevenRows设置为true.然后,您可以指定单元格的高度.可能是在使用RowHeight时也需要设置此bool.
这让我意识到我必须创建一个继承自ViewCell并绑定到类上的属性的类:
public class QuizCell : ViewCell
{
public QuizCell()
{
var label = new Label {HeightRequest = 20};
label.SetBinding (Label.TextProperty, "Title");
View = label;
}
}
Run Code Online (Sandbox Code Playgroud)
为了使用它,我改为QuizzesPage:
public class QuizzesPage : ContentPage
{
private readonly ListView _listView;
public QuizzesPage()
{
Title = "Test";
NavigationPage.SetHasNavigationBar(this, true);
_listView = new ListView
{
HasUnevenRows = true,
ItemTemplate = new DataTemplate(typeof (QuizCell)),
//RowHeight = 10
};
Content = _listView;
}
protected async override void OnAppearing()
{
base.OnAppearing();
var quizEndpoint = new QuizEndpoint("Test");
var quizzes = await quizEndpoint.LoadAllAsync();
_listView.ItemsSource = quizzes;
}
}
Run Code Online (Sandbox Code Playgroud)
这里的重要部分是:
ListView小号ItemSource被设定为List<Quiz>,其中Quiz对象具有Title属性(I结合的所述一个Label到).ListView设置ItemTemplate方法new DataTemplate(typeof (QuizCell)),这是我创建的新类.现在我可以HeightRequest使用继承的类中使用的组件的属性将高度设置为我想要的任何行ViewCell.
我的问题的原因是我过多地简化了TODO示例(并且这RowHeight似乎没有做太多).最后,这与模拟器无关.我希望这可以帮助别人!
| 归档时间: |
|
| 查看次数: |
4651 次 |
| 最近记录: |