TouchabelOpacityはiOSでは正常に機能しますが、onPressメソッドはAndroidで機能しません。
私の反応ネイティブバージョン:0.57.4
私のコード:
const initDrawer = navigation => (
<TouchableOpacity
style={{ left: 16 }}
onPress={() => onPressDrawerButton(navigation)}
>
<Ionicons name="ios-menu" color="white" size={30} />
</TouchableOpacity>
);
同じ問題があり、すべてのTouchableOpacityボタンはiOSビルドで正常に機能していましたが、Androidに発生しませんでした。これに遭遇しました answer here that position: absolute
はトリガーをめちゃくちゃにします。それは私の問題を解決しました。
私にとって、私はNativeBaseを使用していて、Androidで壊れていた次の構造を持っていました:
<List>
<TouchableOpacity>
<ListItem>
<Text>Button</Text>
</ListItem>
</TouchableOpacity>
</List>
ListItem
を削除し、テキストをTouchableOpacity
の直接の子にすると、うまくいきました。
このようにビューでアイコンをラップします。
const initDrawer = navigation => (
<TouchableOpacity
style={{ left: 16 }}
onPress={() => onPressDrawerButton(navigation)}
>
<View style={{padding:5}}>
<Ionicons name="ios-menu" color="white" size={30} />
</View>
</TouchableOpacity>
);
問題が解決しない場合は、backgroundColorを使用してアイコンのスタイルを設定すると、アイコンの半分がbackgroundColorを使用してスタイル設定されないことがわかりますので、パディングを大きくする必要があります。わかりませんが、アイコンは特にTouchableOpacityの場合、ボリュームの点で問題が発生する傾向があります。そのため、私はアイコンのパディングを使用して親ビューを作成します。他の人が言及した他の何かはpostionです:Componentボリュームを混乱させる「絶対」プロップ。