Add the code for Compound View (Android)
This commit is contained in:
Родитель
da2007fde0
Коммит
c8cad182d2
|
@ -0,0 +1,17 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "compositecontrol", "compositecontrol\compositecontrol.csproj", "{F4228B0F-C39A-4B91-8CDE-5857C8EDA59D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{F4228B0F-C39A-4B91-8CDE-5857C8EDA59D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F4228B0F-C39A-4B91-8CDE-5857C8EDA59D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F4228B0F-C39A-4B91-8CDE-5857C8EDA59D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F4228B0F-C39A-4B91-8CDE-5857C8EDA59D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -0,0 +1,19 @@
|
|||
Any raw assets you want to be deployed with your application can be placed in
|
||||
this directory (and child directories) and given a Build Action of "AndroidAsset".
|
||||
|
||||
These files will be deployed with your package and will be accessible using Android's
|
||||
AssetManager, like this:
|
||||
|
||||
public class ReadAsset : Activity
|
||||
{
|
||||
protected override void OnCreate (Bundle bundle)
|
||||
{
|
||||
base.OnCreate (bundle);
|
||||
|
||||
InputStream input = Assets.Open ("my_asset.txt");
|
||||
}
|
||||
}
|
||||
|
||||
Additionally, some Android functions will automatically load asset files:
|
||||
|
||||
Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
|
|
@ -0,0 +1,13 @@
|
|||
using System;
|
||||
namespace com.xamarin.recipes.compositecontrol
|
||||
{
|
||||
public class DatePickerChangedArgs : EventArgs
|
||||
{
|
||||
public DatePickerChangedArgs(DateTime date)
|
||||
{
|
||||
this.Date = date;
|
||||
}
|
||||
|
||||
public DateTime Date { get; private set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,142 @@
|
|||
|
||||
using System;
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.OS;
|
||||
using Android.Util;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
|
||||
namespace com.xamarin.recipes.compositecontrol
|
||||
{
|
||||
public class DatePickerTextView : LinearLayout
|
||||
{
|
||||
public EventHandler<DatePickerChangedArgs> DateChanged = (sender, e) => { };
|
||||
|
||||
static readonly string KEY_PARENT_STATE = "datepicker_parent_state";
|
||||
static readonly string KEY_DATEPICKER_STATE = "datepicker_state";
|
||||
TextView textView;
|
||||
ImageButton dateButton;
|
||||
DateTime theDate = DateTime.Now;
|
||||
|
||||
|
||||
public DatePickerTextView(Context context) : base(context)
|
||||
{
|
||||
Initialize(Tuple.Create<Context, IAttributeSet, int>(context, null, 0));
|
||||
}
|
||||
|
||||
public DatePickerTextView(Context context, IAttributeSet attrs) : base(context, attrs)
|
||||
{
|
||||
Initialize(Tuple.Create<Context, IAttributeSet, int>(context, attrs, 0));
|
||||
}
|
||||
|
||||
public DatePickerTextView(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs)
|
||||
{
|
||||
Initialize(Tuple.Create<Context, IAttributeSet, int>(context, attrs, defStyle));
|
||||
}
|
||||
|
||||
protected override IParcelable OnSaveInstanceState()
|
||||
{
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.PutParcelable(KEY_PARENT_STATE, base.OnSaveInstanceState());
|
||||
bundle.PutString(KEY_DATEPICKER_STATE, textView.Text);
|
||||
return bundle;
|
||||
}
|
||||
|
||||
protected override void OnRestoreInstanceState(IParcelable state)
|
||||
{
|
||||
var bundle = state as Bundle;
|
||||
if (bundle == null)
|
||||
{
|
||||
base.OnRestoreInstanceState(state);
|
||||
textView.Text = bundle.GetString(KEY_DATEPICKER_STATE, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
base.OnRestoreInstanceState(state);
|
||||
}
|
||||
}
|
||||
|
||||
void Initialize(Tuple<Context, IAttributeSet, int> values)
|
||||
{
|
||||
InitializeLinearLayoutProperties();
|
||||
|
||||
var inflater = LayoutInflater.FromContext(values.Item1);
|
||||
inflater.Inflate(Resource.Layout.date_picker_layout, this);
|
||||
dateButton = FindViewById<ImageButton>(Resource.Id.pick_date_button);
|
||||
textView = FindViewById<TextView>(Resource.Id.date_text_view);
|
||||
|
||||
dateButton.Click += DateButton_Click;
|
||||
|
||||
UpdateDisplayedDate();
|
||||
}
|
||||
|
||||
void UpdateDisplayedDate()
|
||||
{
|
||||
textView.Text = theDate.ToString("yyyy-MMM-dd");
|
||||
}
|
||||
|
||||
void InitializeLinearLayoutProperties()
|
||||
{
|
||||
SetGravity(GravityFlags.CenterVertical);
|
||||
Orientation = Orientation.Horizontal;
|
||||
int paddingStartEnd = Convert.ToInt32(Resources.GetDimension(Resource.Dimension.datepicker_padding_startend));
|
||||
int paddingTopBottom = Convert.ToInt32(Context.Resources.GetDimension(Resource.Dimension.datepicker_padding_topbottom));
|
||||
SetPadding(paddingStartEnd, paddingTopBottom, paddingStartEnd, paddingTopBottom);
|
||||
}
|
||||
|
||||
void DateButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
var dialog = MyDatePickerDialog.Create(this);
|
||||
dialog.Show(this.HostActivity().FragmentManager, "date_picker_dialog");
|
||||
}
|
||||
|
||||
void OnDateSet(object sender, Android.App.DatePickerDialog.DateSetEventArgs e)
|
||||
{
|
||||
theDate = e.Date;
|
||||
UpdateDisplayedDate();
|
||||
DateChanged(this, new DatePickerChangedArgs(e.Date));
|
||||
}
|
||||
|
||||
public DateTime Date
|
||||
{
|
||||
get
|
||||
{
|
||||
return theDate;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
|
||||
theDate = value;
|
||||
}
|
||||
}
|
||||
|
||||
class MyDatePickerDialog : DialogFragment
|
||||
{
|
||||
void HandleEventHandler(object sender, DatePickerDialog.DateSetEventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
DatePickerTextView hostWidget = null;
|
||||
public static MyDatePickerDialog Create(DatePickerTextView view)
|
||||
{
|
||||
var frag = new MyDatePickerDialog()
|
||||
{
|
||||
hostWidget = view ?? throw new NullReferenceException("Must have a valid DatePickerTextView for the host.")
|
||||
};
|
||||
return frag;
|
||||
}
|
||||
|
||||
public override Android.App.Dialog OnCreateDialog(Bundle savedInstanceState)
|
||||
{
|
||||
int year = hostWidget.theDate.Year;
|
||||
int month = hostWidget.theDate.Month - 1; // DatePickerDialog months go from 0 - 11
|
||||
int dayOfMonth = hostWidget.theDate.Day;
|
||||
|
||||
var dialog = new DatePickerDialog(hostWidget.HostActivity(), hostWidget.OnDateSet, year, month, dayOfMonth);
|
||||
return dialog;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
using Android.App;
|
||||
using Android.OS;
|
||||
using Android.Util;
|
||||
|
||||
namespace com.xamarin.recipes.compositecontrol
|
||||
{
|
||||
[Activity(Label = "@string/app_name", MainLauncher = true, Icon = "@mipmap/icon")]
|
||||
public class MainActivity : Activity
|
||||
{
|
||||
DatePickerTextView datePicker;
|
||||
protected override void OnCreate(Bundle savedInstanceState)
|
||||
{
|
||||
base.OnCreate(savedInstanceState);
|
||||
SetContentView(Resource.Layout.Main);
|
||||
datePicker = FindViewById<DatePickerTextView>(Resource.Id.date_picker_view);
|
||||
datePicker.DateChanged += DatePicker_DateChanged;
|
||||
|
||||
}
|
||||
|
||||
void DatePicker_DateChanged(object sender, DatePickerChangedArgs e)
|
||||
{
|
||||
Log.Debug("MainActivity", "The date changed to " + e.Date);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.xamarin.recipes.compositecontrol">
|
||||
<uses-sdk android:minSdkVersion="21" />
|
||||
<application android:allowBackup="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:theme="@android:style/Theme.Material.Light"></application>
|
||||
</manifest>
|
|
@ -0,0 +1,27 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Android.App;
|
||||
|
||||
// Information about this assembly is defined by the following attributes.
|
||||
// Change them to the values specific to your project.
|
||||
|
||||
[assembly: AssemblyTitle("compositecontrol")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("")]
|
||||
[assembly: AssemblyCopyright("${AuthorCopyright}")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
|
||||
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
|
||||
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
|
||||
|
||||
[assembly: AssemblyVersion("1.0.0")]
|
||||
|
||||
// The following attributes are used to specify the signing key for the assembly,
|
||||
// if desired. See the Mono documentation for more information about signing.
|
||||
|
||||
//[assembly: AssemblyDelaySign(false)]
|
||||
//[assembly: AssemblyKeyFile("")]
|
|
@ -0,0 +1,44 @@
|
|||
Images, layout descriptions, binary blobs and string dictionaries can be included
|
||||
in your application as resource files. Various Android APIs are designed to
|
||||
operate on the resource IDs instead of dealing with images, strings or binary blobs
|
||||
directly.
|
||||
|
||||
For example, a sample Android app that contains a user interface layout (main.axml),
|
||||
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
|
||||
would keep its resources in the "Resources" directory of the application:
|
||||
|
||||
Resources/
|
||||
drawable/
|
||||
icon.png
|
||||
|
||||
layout/
|
||||
main.axml
|
||||
|
||||
values/
|
||||
strings.xml
|
||||
|
||||
In order to get the build system to recognize Android resources, set the build action to
|
||||
"AndroidResource". The native Android APIs do not operate directly with filenames, but
|
||||
instead operate on resource IDs. When you compile an Android application that uses resources,
|
||||
the build system will package the resources for distribution and generate a class called "R"
|
||||
(this is an Android convention) that contains the tokens for each one of the resources
|
||||
included. For example, for the above Resources layout, this is what the R class would expose:
|
||||
|
||||
public class R {
|
||||
public class drawable {
|
||||
public const int icon = 0x123;
|
||||
}
|
||||
|
||||
public class layout {
|
||||
public const int main = 0x456;
|
||||
}
|
||||
|
||||
public class strings {
|
||||
public const int first_string = 0xabc;
|
||||
public const int second_string = 0xbcd;
|
||||
}
|
||||
}
|
||||
|
||||
You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
|
||||
to reference the layout/main.axml file, or R.strings.first_string to reference the first
|
||||
string in the dictionary file values/strings.xml.
|
4812
android/layout/composite_view/compositecontrol/Resources/Resource.designer.cs
сгенерированный
Normal file
4812
android/layout/composite_view/compositecontrol/Resources/Resource.designer.cs
сгенерированный
Normal file
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
|
||||
<item android:state_pressed="true" android:drawable="@drawable/datebutton_pressed" />
|
||||
<item android:drawable="@drawable/datebutton_transparent" />
|
||||
|
||||
</selector>
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
|
||||
<solid android:color="#77000000" />
|
||||
|
||||
</shape>
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<solid android:color="#00000000"/>
|
||||
|
||||
</shape>
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M19,3h-1L18,1h-2v2L8,3L8,1L6,1v2L5,3c-1.11,0 -1.99,0.9 -1.99,2L3,19c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM19,19L5,19L5,8h14v11zM7,10h5v5L7,15z"/>
|
||||
</vector>
|
|
@ -0,0 +1,4 @@
|
|||
<vector android:height="96dp" android:viewportHeight="24.0"
|
||||
android:viewportWidth="24.0" android:width="96dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M19,3h-1L18,1h-2v2L8,3L8,1L6,1v2L5,3c-1.11,0 -1.99,0.9 -1.99,2L3,19c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM19,19L5,19L5,8h14v11zM7,10h5v5L7,15z"/>
|
||||
</vector>
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<com.xamarin.recipes.compositecontrol.DatePickerTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/date_picker_view" />
|
||||
</LinearLayout>
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<TextView
|
||||
android:text="Large Text"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/date_text_view"
|
||||
android:gravity="fill_vertical" />
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
<ImageButton
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:srcCompat="@drawable/ic_today_black_24dp"
|
||||
android:src="@drawable/ic_today_black_24dp"
|
||||
android:gravity="right"
|
||||
android:id="@+id/pick_date_button" />
|
||||
</merge>
|
Двоичные данные
android/layout/composite_view/compositecontrol/Resources/mipmap-hdpi/Icon.png
Normal file
Двоичные данные
android/layout/composite_view/compositecontrol/Resources/mipmap-hdpi/Icon.png
Normal file
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 2.1 KiB |
Двоичные данные
android/layout/composite_view/compositecontrol/Resources/mipmap-mdpi/Icon.png
Normal file
Двоичные данные
android/layout/composite_view/compositecontrol/Resources/mipmap-mdpi/Icon.png
Normal file
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 1.4 KiB |
Двоичные данные
android/layout/composite_view/compositecontrol/Resources/mipmap-xhdpi/Icon.png
Normal file
Двоичные данные
android/layout/composite_view/compositecontrol/Resources/mipmap-xhdpi/Icon.png
Normal file
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 3.2 KiB |
Двоичные данные
android/layout/composite_view/compositecontrol/Resources/mipmap-xxhdpi/Icon.png
Normal file
Двоичные данные
android/layout/composite_view/compositecontrol/Resources/mipmap-xxhdpi/Icon.png
Normal file
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 5.3 KiB |
Двоичные данные
android/layout/composite_view/compositecontrol/Resources/mipmap-xxxhdpi/Icon.png
Normal file
Двоичные данные
android/layout/composite_view/compositecontrol/Resources/mipmap-xxxhdpi/Icon.png
Normal file
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 7.6 KiB |
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Composite Control</string>
|
||||
</resources>
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<resources>
|
||||
<dimen name="datepicker_padding_topbottom">8dp</dimen>
|
||||
<dimen name="datepicker_padding_startend">4dp</dimen>
|
||||
</resources>
|
|
@ -0,0 +1,31 @@
|
|||
using System;
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.Views;
|
||||
|
||||
namespace com.xamarin.recipes.compositecontrol
|
||||
{
|
||||
public static class ViewHelpers
|
||||
{
|
||||
|
||||
public static Activity HostActivity(this View view)
|
||||
{
|
||||
if (view == null)
|
||||
{
|
||||
throw new NullReferenceException("Need a valid View reference in order to find the hosting activity.");
|
||||
}
|
||||
|
||||
ContextWrapper context = view.Context as ContextWrapper;
|
||||
while (context != null)
|
||||
{
|
||||
if (context is Activity)
|
||||
{
|
||||
return (Activity)context;
|
||||
}
|
||||
context = context.BaseContext as ContextWrapper;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,118 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\Xamarin.Build.Download.0.4.6\build\Xamarin.Build.Download.props" Condition="Exists('..\packages\Xamarin.Build.Download.0.4.6\build\Xamarin.Build.Download.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{F4228B0F-C39A-4B91-8CDE-5857C8EDA59D}</ProjectGuid>
|
||||
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>com.xamarin.recipes.compositecontrol</RootNamespace>
|
||||
<AssemblyName>compositecontrol</AssemblyName>
|
||||
<TargetFrameworkVersion>v7.1</TargetFrameworkVersion>
|
||||
<AndroidApplication>True</AndroidApplication>
|
||||
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
|
||||
<AndroidResgenClass>Resource</AndroidResgenClass>
|
||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
||||
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
|
||||
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
|
||||
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug</OutputPath>
|
||||
<DefineConstants>DEBUG;</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AndroidLinkMode>None</AndroidLinkMode>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AndroidManagedSymbols>true</AndroidManagedSymbols>
|
||||
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="Mono.Android" />
|
||||
<Reference Include="Xamarin.Android.Support.Annotations">
|
||||
<HintPath>..\packages\Xamarin.Android.Support.Annotations.25.3.1\lib\MonoAndroid70\Xamarin.Android.Support.Annotations.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Compat">
|
||||
<HintPath>..\packages\Xamarin.Android.Support.Compat.25.3.1\lib\MonoAndroid70\Xamarin.Android.Support.Compat.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Core.UI">
|
||||
<HintPath>..\packages\Xamarin.Android.Support.Core.UI.25.3.1\lib\MonoAndroid70\Xamarin.Android.Support.Core.UI.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Core.Utils">
|
||||
<HintPath>..\packages\Xamarin.Android.Support.Core.Utils.25.3.1\lib\MonoAndroid70\Xamarin.Android.Support.Core.Utils.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Media.Compat">
|
||||
<HintPath>..\packages\Xamarin.Android.Support.Media.Compat.25.3.1\lib\MonoAndroid70\Xamarin.Android.Support.Media.Compat.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Fragment">
|
||||
<HintPath>..\packages\Xamarin.Android.Support.Fragment.25.3.1\lib\MonoAndroid70\Xamarin.Android.Support.Fragment.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Vector.Drawable">
|
||||
<HintPath>..\packages\Xamarin.Android.Support.Vector.Drawable.25.3.1\lib\MonoAndroid70\Xamarin.Android.Support.Vector.Drawable.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Animated.Vector.Drawable">
|
||||
<HintPath>..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.25.3.1\lib\MonoAndroid70\Xamarin.Android.Support.Animated.Vector.Drawable.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.v7.AppCompat">
|
||||
<HintPath>..\packages\Xamarin.Android.Support.v7.AppCompat.25.3.1\lib\MonoAndroid70\Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="MainActivity.cs" />
|
||||
<Compile Include="Resources\Resource.designer.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="DatePickerTextView.cs" />
|
||||
<Compile Include="DatePickerChangedArgs.cs" />
|
||||
<Compile Include="ViewHelpers.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\AboutResources.txt" />
|
||||
<None Include="Properties\AndroidManifest.xml" />
|
||||
<None Include="Assets\AboutAssets.txt" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\layout\Main.axml" />
|
||||
<AndroidResource Include="Resources\values\Strings.xml" />
|
||||
<AndroidResource Include="Resources\mipmap-hdpi\Icon.png" />
|
||||
<AndroidResource Include="Resources\mipmap-mdpi\Icon.png" />
|
||||
<AndroidResource Include="Resources\mipmap-xhdpi\Icon.png" />
|
||||
<AndroidResource Include="Resources\mipmap-xxhdpi\Icon.png" />
|
||||
<AndroidResource Include="Resources\mipmap-xxxhdpi\Icon.png" />
|
||||
<AndroidResource Include="Resources\drawable\ic_today_black_24dp.xml" />
|
||||
<AndroidResource Include="Resources\drawable\ic_today_black_96dp.xml" />
|
||||
<AndroidResource Include="Resources\drawable\datebutton_pressed.xml" />
|
||||
<AndroidResource Include="Resources\drawable\datebutton_transparent.xml" />
|
||||
<AndroidResource Include="Resources\drawable\datebutton_background.xml" />
|
||||
<AndroidResource Include="Resources\layout\date_picker_layout.axml" />
|
||||
<AndroidResource Include="Resources\values\dimen.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Resources\drawable\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
|
||||
<Import Project="..\packages\Xamarin.Android.Support.Annotations.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Annotations.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Annotations.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Annotations.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Android.Support.Compat.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Compat.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Compat.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Compat.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Android.Support.Core.UI.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Core.UI.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Core.UI.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Core.UI.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Android.Support.Core.Utils.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Core.Utils.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Core.Utils.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Core.Utils.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Android.Support.Media.Compat.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Media.Compat.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Media.Compat.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Media.Compat.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Android.Support.Fragment.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Fragment.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Fragment.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Fragment.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Android.Support.Vector.Drawable.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Vector.Drawable.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Vector.Drawable.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Vector.Drawable.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Animated.Vector.Drawable.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.Animated.Vector.Drawable.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Android.Support.v7.AppCompat.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.v7.AppCompat.targets" Condition="Exists('..\packages\Xamarin.Android.Support.v7.AppCompat.25.3.1\build\MonoAndroid70\Xamarin.Android.Support.v7.AppCompat.targets')" />
|
||||
<Import Project="..\packages\Xamarin.Build.Download.0.4.6\build\Xamarin.Build.Download.targets" Condition="Exists('..\packages\Xamarin.Build.Download.0.4.6\build\Xamarin.Build.Download.targets')" />
|
||||
</Project>
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="25.3.1" targetFramework="monoandroid71" />
|
||||
<package id="Xamarin.Android.Support.Annotations" version="25.3.1" targetFramework="monoandroid71" />
|
||||
<package id="Xamarin.Android.Support.Compat" version="25.3.1" targetFramework="monoandroid71" />
|
||||
<package id="Xamarin.Android.Support.Core.UI" version="25.3.1" targetFramework="monoandroid71" />
|
||||
<package id="Xamarin.Android.Support.Core.Utils" version="25.3.1" targetFramework="monoandroid71" />
|
||||
<package id="Xamarin.Android.Support.Fragment" version="25.3.1" targetFramework="monoandroid71" />
|
||||
<package id="Xamarin.Android.Support.Media.Compat" version="25.3.1" targetFramework="monoandroid71" />
|
||||
<package id="Xamarin.Android.Support.v7.AppCompat" version="25.3.1" targetFramework="monoandroid71" />
|
||||
<package id="Xamarin.Android.Support.Vector.Drawable" version="25.3.1" targetFramework="monoandroid71" />
|
||||
<package id="Xamarin.Build.Download" version="0.4.6" targetFramework="monoandroid71" />
|
||||
</packages>
|
|
@ -0,0 +1,3 @@
|
|||
This recipe shows how to subclass an Android widget and make a conmposite view in Xamarin.Android.
|
||||
|
||||
[See the recipe at developer.xamarin.com](http://developer.xamarin.com/recipes/android/layout/compound_view)
|
Загрузка…
Ссылка в новой задаче