我正在学习Xamarin并遵循 Mosh Code 中的教程,但是遇到了一个问题,该问题可能与该教程的年代以及对Xamarin / Android UI所做的更改有关自发布以来。
在本教程的这一部分中,我只是拥有一个在常规堆栈布局中水平放置的堆栈布局,但是由于某种原因,水平按钮的按钮过大。
package com.miya.takeaway.common.util.orika;
import com.miya.takeaway.common.util.orika.converter.ConverterHelper;
import ma.glasnost.orika.MapperFactory;
import ma.glasnost.orika.converter.ConverterFactory;
import ma.glasnost.orika.impl.DefaultMapperFactory;
import ma.glasnost.orika.metadata.ClassMapBuilder;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Collections;
import java.util.List;
public class OrikaUtils {
private static MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
public static <T> List<T> map(List<?> objects, Class<T> target) {
if (CollectionUtils.isEmpty(objects)) {
return Collections.EMPTY_LIST;
}
return mapperFactory.getMapperFacade().mapAsList(objects.toArray(), target);
}
}
我也不知道为什么。任何指导表示赞赏。
答案 0 :(得分:1)
如果您确实希望Android中的按钮看起来像在iOS中一样。您可以使用Custom Renderer
在android中设置属性。
表格
创建按钮
using System;
using Xamarin.Forms;
namespace app1
{
public class MyButton:Button
{
public MyButton()
{
}
}
}
在xaml中
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness" iOS="0, 20, 0, 0">
</OnPlatform>
</ContentPage.Padding>
<StackLayout>
<StackLayout Padding="10">
<Label Text="generic username" />
</StackLayout>
<Image Source="http://lorempixel.com/1920/1080/nature/3/" />
<StackLayout Orientation="Horizontal" HorizontalOptions="Start" Spacing="20" Padding="10, 0">
<local:MyButton Text="Like" />
<local:MyButton Text="Comment" />
<local:MyButton Text="Share" />
</StackLayout>
<StackLayout Padding="10">
<BoxView HeightRequest="1" Color="#f0f0f0" />
<Label Text="700 likes" FontAttributes="Bold" />
<Label TextColor="#444" Text="This is a shot." />
</StackLayout>
</StackLayout>
在Android项目中
在资源-> 布局(例如ButtonRenderer.axml)中创建新的布局文件
<?xml version="1.0" encoding="utf-8"?>
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="0dp"
android:minWidth="0dp"
android:background="@android:color/transparent" >
</Button>
在CustomRenderer中
using app1;
using app1.Droid;
using Android.Content;
using Android.Graphics;
using Android.Widget;
using Android.Views;
[assembly:ExportRenderer(typeof(MyButton),typeof(MyButtonRenderer))]
namespace app1.Droid
{
public class MyButtonRenderer:ButtonRenderer
{
readonly Android.Widget.Button button;
public MyButtonRenderer(Context context) : base(context)
{
button = (Android.Widget.Button)LayoutInflater.From(context).Inflate(Resource.Layout.ButtonRenderer, null);
button.SetTextColor(Android.Graphics.Color.Blue);
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)
{
base.OnElementChanged(e);
if (Control != null) { SetNativeControl(button); }
}
}
}
您可以根据需要在axml文件中设置按钮的样式。