2016-08-15 2 views
9

Mam kwadratowy przycisk TouchableOpacity, którego grafika to tylko mała kropka na środku, a reszta to przezroczyste tło. Uważam, że na wielu urządzeniach z Androidem trudno jest go nacisnąć, ponieważ widocznie tylko obszar nieprzezroczysty jest dotykalny, a reszta nie.Kontroluj obszar dotykowy w trybie natywnego reagowania

Czy istnieje sposób kontrolowania dotykowego obszaru TouchableOpacity lub innych podobnych do niego rodzeństwa?

+0

Czy możesz dodać niektóre swoje poglądy? – while1

Odpowiedz

9

Możesz użyć View#hitSlop property, aby zwiększyć obszar dotykowy. Może to być przydatne w scenariuszach, w których wiesz, że zwiększony obszar dotykowy nie będzie nakładał się na inne elementy dotykowe.

Bardziej niezawodnym rozwiązaniem jest użycie właściwości stylu padding. Dotykowy obszar komponentów Touchable* zawiera dopełnienie elementu.

+1

Dobra odpowiedź! A propos - czy to oznacza, że ​​'View # hitSlop' jest również dostępny dla komponentu' TouchableOpacity'? – mllm

+3

Tak, TouchableOpacity jest również widokiem, więc dziedziczy jego właściwości. – jevakallio

+0

Świetna odpowiedź, dzięki. Nie tak łatwe do znalezienia, jak można się spodziewać, ale myślę, że większość ludzi nie wie, aby wyszukać "hit slop". –

4

jestem po prostu dodanie kodu łatwego odwoływania:

<View style={Styles.buttonStyle}> 
    <TouchableOpacity onPress={onBtn1Pressed} hitSlop={{top: 20, bottom: 20, left: 50, right: 50}}> 
     <Text style={Styles.textStyle}> 
      Button text 
     </Text> 
    </TouchableOpacity> 
</View> 

Gdzie przycisk rodzic pojemnik posiada następujące styl. Ponieważ szerokość wynosi 150, podałem w lewo i w prawo jako 50, aby zwiększyć obszar klikalny.

buttonStyle:{ 
    alignItems:'center', 
    backgroundColor: '#F92660', 
    width:150, 
    height:50, 
    marginTop:20, 
    marginBottom:10, 
    marginRight:15, 
    padding:5, 
    },