@xamarin_russia

Страница 491 из 619
Sasha
30.07.2018
12:42:22
нужен не Android.Resource, а YourNamespace.Resource
Не помогло так и выбивает ошибку Resource.Id 'does not contain a definition for' backgroundDrawable

vladimir
30.07.2018
12:42:44
ну а вы создали этот файл?

а, и это должно быть Resource.Drawable.Id

а нет

Google
vladimir
30.07.2018
12:43:15
стоп

просто Resource.Drawable

Sasha
30.07.2018
13:02:51
ну а вы создали этот файл?
Какой файл? Я в этом методе только объявил, но ничего не создавал

Я раньше когда делал рендер элементов, кажется, никаких файлов не создавал

vladimir
30.07.2018
13:04:17
drawable - это некоторый файл в папке Resources/drawable обычно xml

и чтобы к нему доступ получить вы пишете Resource.Drawable.filename

ну тогда перечитайте реализацию, которую вы нашли в интернете, как вы и что делаете

Sasha
30.07.2018
13:06:42
Я смотрел на этот пример, здесь о файле ничего не говорится http://dev.androidteam.ru/

vladimir
30.07.2018
13:09:51
ну там ресурсы встроенные используются Android.Resource.Id.Background

Sasha
30.07.2018
13:09:59
Может вы посоветовать как лучше сделать, чтобы линия прогресса в XF ProgressBar имела границу и закругленные?

vladimir
30.07.2018
13:10:03
нет там никаких clipDrawable

должно работать с этим примером

хотя вы нигде закругление почему-то не поставили

Google
Sasha
30.07.2018
13:13:03
должно работать с этим примером
Сейчас попробую, спасибо

Оно мне показывает весь контрол зеленым, хотя я поставил прогресс в 0.5, почему оно может не отражать самый прогресс?

Я тупанул сейчас переделаю под градиент дровабле и там поставлю корнер радиус

vladimir
30.07.2018
13:25:32
Оно мне показывает весь контрол зеленым, хотя я поставил прогресс в 0.5, почему оно может не отражать самый прогресс?
там, во-первых, не плавающая точка, а, во-вторых, поставьте ещё диапазон через свойства Min и Max

Sasha
30.07.2018
13:30:34
Когда я ставил в простой ProgressBar контрол значение прогрес в 0.5, оно показывало норм

vladimir
30.07.2018
13:32:09
вы используете не Android.Widget.ProgressBar?

Sasha
30.07.2018
13:38:39
вы используете не Android.Widget.ProgressBar?
Нужно его использовать? А то у меня чего-то наследование идет от класса в ПСЛ

Подскажите тогда как его лучше использовать, я когда поставил наследования от Android.Widget.ProgressBar оно подчеркнуло OnElementPropertyChanged и OnElementChanged.

vladimir
30.07.2018
13:43:45
ну тот пример выше конкретно для этого виджета

что вы наследуете-то?

эти методы у рендереров есть только, вроде

Sasha
30.07.2018
13:47:33
Я наследую от ПСЛ класса, который там наследуется от ProgressBar.

Тогда вопрос по другому, как мне сделать через рендеринг, чтобы линия прогресса Progressbar элемента имела обводку и закругления?

Sasha
30.07.2018
13:56:14
Вы предлагаете что бы я поставил типа на бэкграунд картинку, и прямо на него прогресс бар?

Kirill
30.07.2018
13:57:34
Вы предлагаете что бы я поставил типа на бэкграунд картинку, и прямо на него прогресс бар?
в прогресс баре есть проперти , куда надо передать нужную картинку.

гугли как это делается под андроид нативно и через рендерер реализуй

Sasha
30.07.2018
13:57:59
Можно попробовать boxview рендерингом задать границы и закругления а затем на верх наложить прогресс бар?

Google
vladimir
30.07.2018
13:58:51
https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.progressbar?view=xamarin-forms

вы это используете?

Sasha
30.07.2018
14:00:42
vladimir
30.07.2018
14:01:32
ну всё норм, там в рендерере используется Android.Widget.ProgressBar

https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Platform.Android/Renderers/ProgressBarRenderer.cs

что вас останавливает, я не понимаю

Sasha
30.07.2018
14:13:41
что вас останавливает, я не понимаю
Меня не устраивало, что оно чего-то не работает)

Точнее работает, но не так как я хочу

vladimir
30.07.2018
14:14:15
а как оно работает, и как вы хотите?

Sasha
30.07.2018
14:17:10
а как оно работает, и как вы хотите?
Оно отражает лишь бэкграунд контрола, а прогресс - нет. При коде что я сбросил выше оно выглядит так



А мне нужно чтобы была еще линия прогресса, типа это обычный контрол при тех же настройках, но видно что значение 0,5. На предыдущем рисунке этого видно не было

Sasha
30.07.2018
14:22:22


vladimir
30.07.2018
14:23:28
ещё раз код покажите, только исправленный

Sasha
30.07.2018
14:25:14
ещё раз код покажите, только исправленный
var progressDrawable = new GradientDrawable(); progressDrawable.SetStroke(1, Android.Graphics.Color.Black); progressDrawable.SetCornerRadius(25); progressDrawable.SetColorFilter(Android.Graphics.Color.LightBlue, PorterDuff.Mode.SrcIn); var backgroundDrawable = new GradientDrawable(); backgroundDrawable.SetStroke(1, Android.Graphics.Color.Black); backgroundDrawable.SetCornerRadius(25); backgroundDrawable.SetColorFilter(Android.Graphics.Color.LightGreen, PorterDuff.Mode.SrcIn); LayerDrawable layerDrawable = new LayerDrawable( new Drawable[] { progressDrawable, backgroundDrawable }); Control.ProgressDrawable = layerDrawable;

Думаю этот самый правильный код

vladimir
30.07.2018
14:26:16
progressDrawable.SetColorFilter(Android.Graphics.Color.LightBlue, PorterDuff.Mode.SrcIn); зачем тип наложения цветов устанавливаете?

делайте SetColor

в обоих случаях

вместо SetColorFilter

Google
vladimir
30.07.2018
14:28:56
и вы не выставили layerDrawable.SetId(0, Android.Resource.Id.Background); layerDrawable.SetId(1, Android.Resource.Id.Progress);

Sasha
30.07.2018
14:30:51
и вы не выставили layerDrawable.SetId(0, Android.Resource.Id.Background); layerDrawable.SetId(1, Android.Resource.Id.Progress);
У меня на этом моменте выбивает ошибку, что Resource.Id' does not contain a definition for 'backgroundDrawable'

vladimir
30.07.2018
14:31:28
так нужен не backgroundDrawable, а Background

У меня на этом моменте выбивает ошибку, что Resource.Id' does not contain a definition for 'backgroundDrawable'
у этого элемента ProgressBar есть некоторая разметка, и в этой разметке у внутреннего элемента, отвечающего за прогресс выставлен id = Progress потому мы должны выставить drawable для этого внутреннего элемента через его id

и то же самое для Background

vladimir
30.07.2018
14:41:56
вы поменяли в обоих случаях SetColorFilter на SetColor?

Admin
ERROR: S client not available

Sasha
30.07.2018
14:42:33
vladimir
30.07.2018
14:42:36
и вы добавили layerDrawable.SetId(0, Android.Resource.Id.Background); layerDrawable.SetId(1, Android.Resource.Id.Progress); перед присвоением ProgressDrawable?

Sasha
30.07.2018
14:42:40
var progressDrawable = new GradientDrawable(); progressDrawable.SetStroke(1, Android.Graphics.Color.Black); progressDrawable.SetCornerRadius(25); progressDrawable.SetColor(Android.Graphics.Color.Blue); var backgroundDrawable = new GradientDrawable(); backgroundDrawable.SetStroke(1, Android.Graphics.Color.Black); backgroundDrawable.SetCornerRadius(25); backgroundDrawable.SetColor(Android.Graphics.Color.LightGreen); LayerDrawable layerDrawable = new LayerDrawable( new Drawable[] { progressDrawable, backgroundDrawable }); layerDrawable.SetId(0, Android.Resource.Id.Background); layerDrawable.SetId(1, Android.Resource.Id.Progress); Control.ProgressDrawable = layerDrawable;

vladimir
30.07.2018
14:44:35
поймайте свойство Progress в OnElementPropertyChanged по сле base.OnElementPropertyChanged и гляньте значение Progress в Element также гляньте какие значения стоят у Control для Max, Min, Progress

может оно по какой-то причине в нуль сбросилось

LayerDrawable layerDrawable = new LayerDrawable( new Drawable[] { progressDrawable, backgroundDrawable });

местами поменяйте progressDrawable и backgroundDrawable

а и вам нужно использовать ClipDrawable

перепроверьте всё по туторилу

много несоответствий

Google
Sasha
30.07.2018
14:48:41
местами поменяйте progressDrawable и backgroundDrawable
Да, также пробовал менять местами, тогда контрол стал синим , не заленим

vladimir
30.07.2018
14:49:23
тут не пробовать надо

так и должно быть

Dim
30.07.2018
14:51:00
для ios в файле AppDelegate в методе FinishedLaunching добавьте UITabBar.Appearance.TintColor = UIColor.Black; ну или какой нужен
Владимер, подскаж, TabbedPageRenderer - как там разобраться что и как нужно переопределять ?

vladimir
30.07.2018
14:51:35
Да, также пробовал менять местами, тогда контрол стал синим , не заленим
ну и вместо progressDrawable должен быть clipDrawable, а его уже инициализировать с progressDrawable

Dim
30.07.2018
14:54:20
вы ознакомились с этим?
я создал свой custom render унаследованый от TabbedPageRenderer, только теперь немогу понять как с ним работать ,

vladimir
30.07.2018
14:55:19
я создал свой custom render унаследованый от TabbedPageRenderer, только теперь немогу понять как с ним работать ,
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/contentpage#creating-the-page-renderer-on-android

по аналогии переопределите метод OnElementChanged

и в нём уже делайте манипуляции с Control

Sasha
30.07.2018
14:57:04
ну и вместо progressDrawable должен быть clipDrawable, а его уже инициализировать с progressDrawable
Посмотрите пожалуйста, я проверил сейчас код выглядит так, но он выглядит по старому но цвет уже синий. Что-то никак не могу понять чего не работает var progressDrawable = new GradientDrawable(); progressDrawable.SetStroke(1, Android.Graphics.Color.Black); progressDrawable.SetCornerRadius(25); progressDrawable.SetColor(Android.Graphics.Color.LightBlue); var backgroundDrawable = new GradientDrawable(); backgroundDrawable.SetStroke(1, Android.Graphics.Color.Black); backgroundDrawable.SetCornerRadius(25); backgroundDrawable.SetColor(Android.Graphics.Color.LightGreen); ClipDrawable clipProgress = new ClipDrawable(progressDrawable, GravityFlags.Left, ClipDrawableOrientation.Horizontal); LayerDrawable layerDrawable = new LayerDrawable( new Drawable[] {backgroundDrawable, clipProgress}); layerDrawable.SetId(0, Android.Resource.Id.Background); layerDrawable.SetId(1, Android.Resource.Id.Progress); Control.ProgressDrawable = layerDrawable;

vladimir
30.07.2018
14:59:21
выглядит нормально

попробуйте очистить решение с bin/obj

и в нём уже делайте манипуляции с Control
там нет Control, и прямого доступа к BottomNavigationView, потому вам надо будет его нарыть с помощью подобного

только вместо if (view is TabLayout tabLayout) сделайте if (view is BottomNavigationView navigationView) и уже с ним манипуляции проводите

возможно понадобится рекурсия, как в самом нижнем методе

Sasha
30.07.2018
15:09:22
попробуйте очистить решение с bin/obj
Не помогло ( Ставил точки остановки, кажется всьо норм

Сейчас контрол выглядит так Только цвет светло синий

vladimir
30.07.2018
15:16:57
не знаю, что ещё сделать тогда либо может ещё кто тут подскажет, либо свой велосипед делать из BoxView

попробуй ещё самим выставлять Progress в OnElementPropertyChanged

Страница 491 из 619