Я работаю над приложением-реагированием и использую «React-Cniate»: «0,73.6», и я сталкиваюсь с некоторыми проблемами пользовательского интерфейса, когда на экране появляется клавиатура на экране MessageInbox. Ниже приведен код для экрана: < /p>
import React, { useEffect, useRef, useState } from 'react';
import { View, Text, StyleSheet, TouchableOpacity, Image, TextInput, ActivityIndicator, FlatList, Alert, SafeAreaView, } from 'react-native';
import { COLORS } from '../../themes/palette';
import MainCommonHeader from '../../components/headers/MainCommonHeader';
import { moderateScale, scale, verticalScale } from 'react-native-size-matters/extend';
const NewInboxScreen = ({ route, navigation }) => {
const { data } = route.params || {};
const [filteredMessages, setFilteredMessages] = useState([]);
const [loading, setLoading] = useState(true);
const [messageBody, setMessageBody] = useState('');
const [sending, setSending] = useState(false); // Track sending state
const conversationNumber = data;
const sendSMS = async () => {
if (!messageBody.trim()) {
Alert.alert('Error', 'Message body cannot be empty!');
return;
}
setSending(true);
console.log(`Message sent to +${conversationNumber}:`, messageBody);
try {
setFilteredMessages((prevMessages) => [...prevMessages, newMessage]);
setMessageBody(''); // Clear the TextInput
setSending(false);
} catch (error) {
console.error('Error sending SMS:', error);
Alert.alert('Error', 'Failed to send SMS');
} finally {
setSending(false);
}
};
const renderItem = ({ item }) => {
const isOutGoing = item.sb === 'out';
return (
{!isOutGoing && }
{item.mb}
{new Date(item.sdt).toLocaleString()}
);
};
return (
navigation.goBack()}
/>
{loading ? (
) : (
index.toString()} // Unique key for each item
onContentSizeChange={() => flatListRef.current?.scrollToEnd({ animated: true })}
onLayout={() => flatListRef.current?.scrollToEnd({ animated: true })} // Ensure scrolling on layout
/>
)}
sendSMS()}>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: COLORS.OFFWHITE,
},
subContainer: {
flex: 1,
paddingHorizontal: scale(16),
paddingVertical: verticalScale(16),
},
itemContainer: {
padding: 16,
borderBottomWidth: 1,
borderColor: '#ccc',
},
text: {
fontSize: 16,
marginVertical: 2,
color: COLORS.DARK,
},
});
export default NewInboxScreen;
< /code>
Теперь на этом экране, когда появляется здесь клавиатура, тогда заголовок или, скажем, автоматически изменяется. Вы можете увидеть скриншоты ниже. это фактическая макет экрана перед открытием клавиатуры ». src = "https://i.sstatic.net/4hns9uhl.jpg"/>
[*] Это макет экрана после открытия клавиатура.
< /ol>
Вы можете видеть, что высота заголовка уменьшается при открытии клавиатуры.
также в моем in androidmanifest.xml < /code> У меня есть Android: WindowsoftinputMode = "AdleSustresize" < /code>
и когда я изменяю его на Android: WindowsOftInputMode = "AdvutionPan" < /code>, затем, когда появляется клавиатура, мой пользовательский интерфейс выглядит так:
Здесь вы можете видеть, что, когда появляется клавиатура, все нажимается в заголовке и входной короб под клавиатурой.
Я также пытался использовать QueyboardVoidingView, но она не работает, как ожидалось. Так что, пожалуйста, помогите здесь, как я могу решить эту проблему. Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/794 ... appears-on
У меня возникают проблемы с настройкой макета на Android, когда на экране появляется мягкая клавиатура в React-Native ⇐ Javascript
Форум по Javascript
1738939150
Anonymous
Я работаю над приложением-реагированием и использую «React-Cniate»: «0,73.6», и я сталкиваюсь с некоторыми проблемами пользовательского интерфейса, когда на экране появляется клавиатура на экране MessageInbox. Ниже приведен код для экрана: < /p>
import React, { useEffect, useRef, useState } from 'react';
import { View, Text, StyleSheet, TouchableOpacity, Image, TextInput, ActivityIndicator, FlatList, Alert, SafeAreaView, } from 'react-native';
import { COLORS } from '../../themes/palette';
import MainCommonHeader from '../../components/headers/MainCommonHeader';
import { moderateScale, scale, verticalScale } from 'react-native-size-matters/extend';
const NewInboxScreen = ({ route, navigation }) => {
const { data } = route.params || {};
const [filteredMessages, setFilteredMessages] = useState([]);
const [loading, setLoading] = useState(true);
const [messageBody, setMessageBody] = useState('');
const [sending, setSending] = useState(false); // Track sending state
const conversationNumber = data;
const sendSMS = async () => {
if (!messageBody.trim()) {
Alert.alert('Error', 'Message body cannot be empty!');
return;
}
setSending(true);
console.log(`Message sent to +${conversationNumber}:`, messageBody);
try {
setFilteredMessages((prevMessages) => [...prevMessages, newMessage]);
setMessageBody(''); // Clear the TextInput
setSending(false);
} catch (error) {
console.error('Error sending SMS:', error);
Alert.alert('Error', 'Failed to send SMS');
} finally {
setSending(false);
}
};
const renderItem = ({ item }) => {
const isOutGoing = item.sb === 'out';
return (
{!isOutGoing && }
{item.mb}
{new Date(item.sdt).toLocaleString()}
);
};
return (
navigation.goBack()}
/>
{loading ? (
) : (
index.toString()} // Unique key for each item
onContentSizeChange={() => flatListRef.current?.scrollToEnd({ animated: true })}
onLayout={() => flatListRef.current?.scrollToEnd({ animated: true })} // Ensure scrolling on layout
/>
)}
sendSMS()}>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: COLORS.OFFWHITE,
},
subContainer: {
flex: 1,
paddingHorizontal: scale(16),
paddingVertical: verticalScale(16),
},
itemContainer: {
padding: 16,
borderBottomWidth: 1,
borderColor: '#ccc',
},
text: {
fontSize: 16,
marginVertical: 2,
color: COLORS.DARK,
},
});
export default NewInboxScreen;
< /code>
Теперь на этом экране, когда появляется здесь клавиатура, тогда заголовок или, скажем, автоматически изменяется. Вы можете увидеть скриншоты ниже. это фактическая макет экрана перед открытием клавиатуры ». src = "https://i.sstatic.net/4hns9uhl.jpg"/>
[*] Это макет экрана после открытия клавиатура.
< /ol>
Вы можете видеть, что высота заголовка уменьшается при открытии клавиатуры.
также в моем in androidmanifest.xml < /code> У меня есть Android: WindowsoftinputMode = "AdleSustresize" < /code>
и когда я изменяю его на Android: WindowsOftInputMode = "AdvutionPan" < /code>, затем, когда появляется клавиатура, мой пользовательский интерфейс выглядит так:
Здесь вы можете видеть, что, когда появляется клавиатура, все нажимается в заголовке и входной короб под клавиатурой.
Я также пытался использовать QueyboardVoidingView, но она не работает, как ожидалось. Так что, пожалуйста, помогите здесь, как я могу решить эту проблему. Спасибо.
Подробнее здесь: [url]https://stackoverflow.com/questions/79421238/i-am-having-issues-on-adjusting-layout-on-android-when-soft-keyboard-appears-on[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия