AndroidのCardViewにレンダリングするContentViewとレンダラーを拡張するカスタムコンポーネントを作成しました。Android用のカスタムレンダラCardViewがFormsコンポーネントのコンテンツを表示しない
私が直面している問題は、FormsコンテンツがCardViewの下にレンダリングされることです。 KitKatではこれは起こらないが、私はCardViewの実装がLollipop以上と同じではないと思う。
CardViewの背景色を透明(0x00000000)に設定すると、CardViewの下のコンテンツが表示されます。
フォームコンポーネント:
using Xamarin.Forms;
namespace CodeFest
{
public class NativeClientProfile : ContentView
{
public NativeClientProfile()
{
var grid = new Grid
{
RowDefinitions = new RowDefinitionCollection {new RowDefinition()},
ColumnDefinitions = new ColumnDefinitionCollection {new ColumnDefinition(), new ColumnDefinition()}
};
grid.Children.Add(new Label {Text = "FSP No"}, 0, 0);
grid.Children.Add(new Label {Text = "12345", HorizontalTextAlignment = TextAlignment.Center}, 1, 0);
grid.Children.Add(new Label {Text = "Risk"}, 0, 1);
grid.Children.Add(
new Label {Text = "Low", TextColor = Color.Green, HorizontalTextAlignment = TextAlignment.Center}, 1, 1);
var item = new Label
{
Text = "Foo bar",
HorizontalTextAlignment = TextAlignment.Center,
FontSize = 30,
FontAttributes = FontAttributes.Bold
};
Content = new StackLayout
{
Children =
{
item,
new Label
{
Text = "Financial Services Provider",
HorizontalTextAlignment = TextAlignment.Center
},
grid
}
};
}
}
}
カスタムレンダラ:
using Android.Support.V7.Widget;
using Android.Text;
using Android.Views;
using CodeFest;
using CodeFest.Droid.ComponentRenderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer(typeof(NativeClientProfile), typeof(NativeClientProfileRenderer))]
namespace CodeFest.Droid.ComponentRenderers
{
class NativeClientProfileRenderer : ViewRenderer<NativeClientProfile, CardView>
{
protected override void OnElementChanged(ElementChangedEventArgs<NativeClientProfile> elementChangedEventArgs)
{
var view = new CardView(Context);
//view.SetCardBackgroundColor(0x00000000);
SetNativeControl(view);
}
}
}
私が正しくCardViewカスタムレンダラ内のフォーム要素をレンダリングする方法の例を探しています。
通常、CardViewはRecyclerViewで使用されます。 RecyclerViewの外で使用しますか?スタンドアローンビューの場合、なぜCardViewが必要なのですか? –