Только текстовая область кнопки кликабельна

Нажатие не работает для всех частей кнопки. Только текстовая область кликабельна.

В качестве решения я использовал contentStyle вместо стиля опора. Но он меняет только цвет в области касания кнопки. Мне нужно применить нажатие кнопки для всей кнопки и изменить цвет всей кнопки при нажатии в любом месте кнопки.

Вот мой код:

import * as React from "react";
import { Button } from "react-native-paper";
import styles from "./styles";

const Cbutton = ({ text, onPress }) => (
  <Button style={styles.wrapper} mode="contained" onPress={onPress}>
    {text}
  </Button>
);

export default Cbutton;

Это мой код для таблицы стилей.

import { StyleSheet } from 'react-native';

export default StyleSheet.create({

    wrapper: {
      flexDirection: 'row',
      justifyContent:'center',
      alignItems: 'center',
      width: ( "96%" ),
    },

});

3 ответа

У меня была такая же проблема, и, к счастью, исправить очень просто - просто удалите { alignItems: 'center' } из опоры стиля вашей кнопки 👍

При применении он сжимает контейнер содержимого Button, и в этом нет необходимости благодаря внутреннему стилю Button.

Для высоты рекомендую установить { height: '100%' }в свойстве contentStyle. Однако не уверен в настройке цвета onPress. Если вы не можете найти готовое решение, я бы попробовал накатить собственное с помощью react-native Pressable .

Вы должны использовать TouchableHighlight, чтобы изменить активное состояние.

Что касается, что касается интерактивной области, я думаю, кнопка rn-paper по умолчанию является правильной. Вы должны проверить, как вы экспортировали компонент.

Проблема, описанная @ os-hewawitharana, возникает только после того, как вы установили для параметра disabled значение true, а затем снова установите значение false.

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

constructor(props) {
    super(props);
    this.state = {
        desativado: false
    };

}


async componentDidMount() {
    setTimeout(() => {
        this.setState({ desativado: true });
    }, 2000);
    setTimeout(() => {
        this.setState({ desativado: false });
    }, 4000);
}

render(){
    return (
    <Button
         label={'Entrar'}
         color={'blue'}
         onPress={async () => {
             await this.setState({ desativado: true });
         }}
         disabled={this.state.desativado}
         mode="contained"
         ark={true} > <Text style={{ fontSize: 14 }}>Text</Text>
    </Button>
);

Пока решение - использовать альфа версии 3

npm i react-native-paper@3.0.0-alpha.3

Вскоре они выпустят стабильную версию v3, ответив в моем отчете о проблеме на github: https://github.com/callstack/react-native-paper/issues/1297

Другие вопросы по тегам