Absolute và Flexbox trong React Native


95

Tôi muốn đặt một thanh màu trắng sẽ chiếm toàn bộ chiều rộng ở cuối màn hình. Để làm như vậy, tôi đã nghĩ đến việc sử dụng absoluteđịnh vị với các flexboxtham số kế thừa .

Với đoạn mã sau, nó hiển thị một cái gì đó như thế này .

Đây là mã của tôi:

var NavigationBar = React.createClass({
  render: function() {
    return(
    <View style={navigationBarStyles.navigationBar}>
      //Icon 1, Icon 2...
    </View>
    );
  }
});

var Main = React.createClass({
  render: function() {
    return(
      <View style={mainStyles.container}>
          <NavigationBar />
      </View>
    );
  }
});

var mainStyles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#456783',
  }
});

var navigationBarStyles = StyleSheet.create({
  navigationBar: {
    backgroundColor: '#FFFFFF',
    height: 30,
    position: 'absolute', 
    flexDirection: 'row',
    bottom: 0,
    justifyContent: 'space-between'
  },
});

Tôi mới làm quen với việc tạo kiểu trong CSS và không phải tất cả các thuộc tính đều có sẵn trong React-Native. Vì vậy, bất kỳ sự giúp đỡ nào được đánh giá cao, cảm ơn :)

Câu trả lời:


157

Ok, đã giải quyết được vấn đề của tôi, nếu có ai đi ngang qua đây là câu trả lời:

Chỉ cần có thêm left: 0,và top: 0,đến phong cách, và vâng, tôi mệt mỏi.

position: 'absolute',
left:     0,
top:      0,

10
Cảm ơn vì đã đăng điều đó. Và nó có vẻ tương tự như vậy đối với chiều cao - thay vì height:100%, làm top:0, bottom:0.
— Premasagar

4
nhưng nếu bạn muốn đặt thanh ở dưới cùng và có chiều rộng đầy đủ, bạn nên thêm left:0, right:0và không nên thêm top:0, nếu bạn đặt top:0và bottom:0, nó sẽ hiển thị toàn màn hình.
— Spark.Bao

1
Làm thế nào tôi có thể trung tâm? Ví dụ: tôi muốn hiển thị một con quay trên đầu thành phần của mình và tôi muốn con quay là tuyệt đối và chính giữa?
— Murat Ozgul,

1
Đối với điền tất cả các không gian theo chiều dọc với một đứa trẻ vị trí tuyệt đối thêm top:0và bottom:0làm việc như một sự thay thế cho ` 'height: 100%" làm để @Premasagar
— Nick Pineda

1
Jus add left, top, rightvà botton0 và hoạt động hoàn hảo.
— jose920405

64

Bước đầu tiên là thêm

position: 'absolute',

sau đó nếu bạn muốn phần tử có chiều rộng đầy đủ, hãy thêm

left: 0,
right: 0,

sau đó, nếu bạn muốn đặt phần tử ở dưới cùng, hãy thêm

bottom: 0,
// don't need set top: 0

nếu bạn muốn đặt phần tử ở trên cùng, hãy thay thế bottom: 0bằngtop: 0


4

Giải pháp này đã làm việc cho tôi:

tabBarOptions: {
      showIcon: true,
      showLabel: false,
      style: {
        backgroundColor: '#000',
        borderTopLeftRadius: 40,
        borderTopRightRadius: 40,
        position: 'relative',
        zIndex: 2,
        marginTop: -48
      }
  }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.