วิธีการจัดเรียงข้อความอย่างถูกต้องในการตอบสนองดั้งเดิม


91

การป้อนข้อความอยู่ในแนวกึ่งกลางวิธีแก้ไขการป้อนข้อความนี้เพื่อให้รับข้อมูลจากมุมบนซ้าย

การป้อนข้อความอยู่ในแนวกึ่งกลางวิธีแก้ไขการป้อนข้อความนี้เพื่อให้รับข้อมูลจากมุมบนซ้าย

นี่คือ css ของฉันสำหรับการป้อนข้อความ

/* The Text input is center aligned, how to fix this text input so that it takes input from top left corner */

input: {
  flex: 1, padding: 4, marginRight: 1, marginTop: 5, fontSize: 18, borderWidth: 1, borderRadius: 4, borderColor: '#E6E5ED', backgroundColor: '#F8F8F9', justifyContent: 'flex-start', height: 150
}

2
อืม ... จัดให้ตรงกับอะไร? คำถามของคุณไม่ได้ระบุสิ่งที่คุณกำลังพยายามทำ
Colin Ramsay

1
ฉันควรเพิ่มอะไรใน css ของฉันเพื่อให้ข้อความของฉันเริ่มจากมุมบนซ้าย
Vikramaditya

คำตอบ:


210

ฉันมีปัญหาเดียวกัน แต่บันทึกข้างต้นไม่สามารถแก้ปัญหาได้ มีคุณสมบัติรูปแบบเฉพาะสำหรับ Android เท่านั้นtextAlignVerticalที่แก้ไขปัญหานี้ในอินพุตแบบหลายบรรทัด

กล่าวคือ textAlignVertical: 'top'


1
ios ได้รับการแก้ไขโดยค่าเริ่มต้นหรือไม่หรือการแก้ไขนี้ใช้ได้กับ Android เท่านั้น
dev_ter

2
@dev_ter เป็น Android เท่านั้น ฉันคิดว่า iOS อยู่ในระดับบนสุดตามค่าเริ่มต้นแม้ว่าฉันจะใช้ RN มาระยะหนึ่งแล้วจึงยังไม่ได้รับการยืนยัน ไม่แน่ใจว่าคุณจะจัดแนวตรงกลางหรืออย่างไร แต่อย่าลังเลที่จะจดบันทึกหรือแก้ไขหากคุณพบวิธี!

5
ยอดเยี่ยมแก้ไขปัญหา TextInput สอดคล้องกับmultiline={true}ใน Android
C.Lee

8
จะเป็นที่ยอมรับได้อย่างไรถ้าtextAlignVertical เป็นเฉพาะ Android?
สูงสุด

1
ทำงานใน iOS ด้วย
deepelement


20

ฉันพบวิธีแก้ปัญหาที่ใน Android สไตล์ TextInput ใช้textAlignVertical: 'top'งานได้ แต่ใน iOS TextInput prop multiline={true}ทำงานได้


5

ฉันมีกรณีการใช้งานที่คล้ายกันในแอป iOS ของฉันซึ่งTextInputความสูงคือ 100 และตัวยึดแสดงอยู่ตรงกลาง ฉันใช้multiline={true}และมันทำให้ข้อความปรากฏจากด้านบน หวังว่าจะช่วยได้


มีวิธีทำให้มันปรากฏที่ด้านล่างหรือไม่?
Johhan Santana

5

ให้textAlignVertical : "top"สิ่งนั้นช่วยแก้ปัญหาของคุณ

<TextInput placeholder="Your text post" multiline={true} numberOfLines={10}, maxLength={1000} style={{ borderWidth: 1, backgroundColor: "#e3e3e3", textAlignVertical : "top" }} />

3

อัปเดต 2015-07-03: รวมอินพุตข้อความหลายบรรทัดแล้ว:

https://github.com/facebook/react-native/pull/991

ตัวอย่างหลายบรรทัดที่มาพร้อมกับ React Native ใน UI Explorer ควรทำงานตามเอกสาร

ปัญหาที่คุณจะพบก็คือการป้อนข้อความหลายบรรทัดยังทำงานไม่ถูกต้องและเอกสารทำให้เข้าใจผิด โปรดดูปัญหา Github นี้:

https://github.com/facebook/react-native/issues/279

"เรายังไม่ได้ย้ายฟังก์ชันดังกล่าวไปยังโอเพนซอร์ส"

มีบางรหัสในปัญหานั้นที่ให้ฟังก์ชันหลายบรรทัดน้อยที่สุดดังนั้นคุณอาจสามารถใช้งานได้



0

เพียงแค่ในกรณีที่คุณกำลังมองหารหัส:

<TextInput
placeholder={'comment goes here!'}
multiline
style={{textAlignVertical:'top', ...otherStyle}}
/>

0
import { Dimensions} from 'react-native';
const screenWidth = Math.round(Dimensions.get('window').width);
const screenHeight = Math.round(Dimensions.get('window').height);

// ...
intext: {
    height:screenHeight - 10,
    textAlignVertical: 'top',
    fontSize:17,
    padding:12,
    fontFamily:'courier',
    margin:10,     
},

0

ฉันพบตามผู้ตรวจสอบองค์ประกอบว่าสำหรับ iOS มีpaddingTop: 5สำหรับmultiline TextInputs สิ่งนี้ยังคงถูกนำไปใช้แม้ว่าฉันจะตั้งค่าpaddingVertical: 15สำหรับอินพุตทั้งหมดของฉัน ผลลัพธ์ที่ได้คือข้อความที่ไม่อยู่กึ่งกลางในอินพุตหลายบรรทัดบน iOS วิธีแก้ปัญหาคือเพิ่มpaddingTop: 15if the TextInputis multilineและแพลตฟอร์มเป็น iOS เพิ่มเติม ขณะนี้ไม่มีความแตกต่างระหว่างอินพุตบรรทัดเดียวและหลายบรรทัดบนทั้งสองแพลตฟอร์ม Android และ iOS


0

ฉันคิดว่าเป็นค่าเริ่มต้นสำหรับ iOS สำหรับ Android ในกรณีของฉันการเพิ่มpaddingVertical: 0,รูปแบบข้อความใช้งานได้


0

คำตอบข้างต้นให้สำหรับ iOS หรือ Android ซึ่งอาจทำให้เข้าใจผิดได้มากดังนั้นสิ่งนี้จึงแก้ไขได้สำหรับ platfoms ทั้งสอง

<TextInput
style={{
flex: 1,
width: "100%",
height: 150,
color: "#FFF",
textAlignVertical: "top", // android fix for centering it at the top-left corner 
}}
multiline={true} // ios fix for centering it at the top-left corner 
numberOfLines={10}
/>

สำหรับ Android -

style={{
//...
flex:1,
textAlignVertical: "top", // android fix for centering it at the top-left corner 
//...
}}

สำหรับ iOS เพิ่ม multiline={true} ไปยัง<TextInput/>องค์ประกอบ


-1

ในการจัดข้อความให้อยู่ในแนวตั้งตรงกลางบนทั้งสองแพลตฟอร์มให้ใช้:

สำหรับการใช้งาน Android textAlignVertical: "center"

สำหรับการใช้งาน iOS justifyContent: "center"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.