2016-05-18 1 views
11

Я пытаюсь заполнить ButtonImage. Кнопка находится внутри сетки. Проблема в том, что изображение не полностью заполняет кнопку. Я также попытался использовать элемент управления ImageButton.Как заполнить кнопку с изображением в форме Xamarin?

Вот как я строю свой U.I:

<Grid Grid.Row="1" Grid.Column="1" x:Name="VotingGrid" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="45*" /> 
    <ColumnDefinition Width="10*" /> 
    <ColumnDefinition Width="45*" /> 
    </Grid.ColumnDefinitions> 

    <Button Grid.Row="0" Grid.Column="0" Image="yay.png" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/> 
    <Button Grid.Row="0" Grid.Column="2" Image="meh.png" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/> 
</Grid> 

В настоящее время она выглядит как изображение прилагается ниже, но я хотел бы, чтобы изображение, чтобы заполнить мою кнопку.

enter image description here

Любая помощь будет оценен по достоинству!

+2

Я попробовал то же самое Не удалось, возможно, из-за разрешения изображения и размера кнопки. Существует один способ сделать это, наложить на кнопку над изображением и установить непрозрачность кнопки на 0. Вы можете выполнять перекрытие в gridlayout или абсолютном макете. –

+0

@AkashAmin Я искал «более чистый» подход. –

+0

Да, я искал его, но ничего не получил, давайте посмотрим, можем ли мы получить другие ответы. Я буду следовать этой теме. Спасибо. –

ответ

18

Попробуйте поместить изображение вместо кнопки.

Вы можете использовать Recognizer Gesture Gesture Gesture Recognizer для проведения кликов.

попробовать что-то вроде этого:

<Image Source="tapped.jpg"> 
    <Image.GestureRecognizers> 
     <TapGestureRecognizer 
       Tapped="OnTapGestureRecognizerTapped" /> 
    </Image.GestureRecognizers> 
</Image> 

Код для обработчика событий

void OnTapGestureRecognizerTapped(object sender, EventArgs args) { 
    var imageSender = (Image)sender; 
    // Do something 
    DisplayAlert ("Alert", "Tap gesture recoganised", "OK"); 
} 

См: Adding a Tap Gesture Gesture Recognizer

+0

Можете ли вы сделать его связанным с mvvm? – batmaci

+1

@batmaci Согласно ссылочной ссылке вы можете использовать ICommand. – Jahmic

1

Я не использовал его сам, но может быть, вы можете использовать это от XLab

https://github.com/XLabs/Xamarin-Forms-Labs/wiki/ImageButton

+0

Я сделал, но я все еще сталкивался с той же проблемой. –

+1

Тогда, может быть, вы можете пойти на съемное изображение, с рамкой вокруг него, чтобы почувствовать кнопку. – BraveHeart

+0

Спасибо! В итоге я пошел на аналогичную идею: съемный кадр с изображением в фоновом режиме. –

Смежные вопросы