【react-native】buttonの代用品としてTouchableOpacityを使う

react-nativeに最初から入っているButtonを使って丸ボタンを作ったのですが、androidだけ

丸の中に従来のボタンが内包された奇怪なボタンができてしまいました。

画像の通り、ものすごく気持ち悪い。

 

 

ButtonBaseの中でcolorプロパティをいじったりwidth/heightを変更・削除したりと試してみたの

ですが変わらず微動だにしない。まだreact-nativeの独特なcssの書き方に慣れていないのもあってか

中々作業が進まない。

ボタンごときで悩むのももったいないので公式や先人のブログでで推奨しているTouchableOpacityを使って装飾を変更することにしました。

</pre>
<View>
<TouchableOpacity style={ButtonText} onPress={props.press} ><Text>{props.text}</Text></TouchableOpacity>
</View>
<pre>

 

結果がこちら。こちらはしっかり希望の見た目をしていますね、100点あげます。

 

 

全コードがこちらです。

</pre>
import React from 'react';
import { View, Text, TouchableOpacity } from 'react-native';
const CircleButton = (props) => {
const { ButtonText } = styles;
return (
<View>
<TouchableOpacity style={ButtonText} onPress={props.press} ><Text>{props.text}</Text></TouchableOpacity>
</View>
);
};

const styles = {
ButtonText: {
backgroundColor: '#F8F8F8',
justifyContent: 'center',
alignItems: 'center',
width:100,
height: 100,
paddingTop: 15,
elevation: 2,
position: 'relative',
borderRadius:50,
borderWidth:1,
},
};
export default CircleButton;
<pre>

 

TouchableOpacityは本来自身の子要素に対してイベントを発火させるボタンなのですが今回

まさか違う用途で使うことになるとは思いませんでした。本来ならば押された時の装飾を変更したり画像にイベントを追加したり

と普通のButton機能では難しいこともできるので、今後アプリでオリジナルボタンを使いまわしたい・または

おしゃれなボタンを作りたい時は基本TouchableOpacityで間違いなさそうです。

逆にダイアログとかで使われるアプリ上であまり目立たないシーンはButtonでも十分だと思いました。

また姉妹品としてTouchableHighlightなるものがありますが性能は似たようなものなので、好みの問題になる

と思います。。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG