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,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:0bottom: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:0bottom:0làm việc như một sự thay thế cho ` 'height: 100%" làm để @Premasagar
Nick Pineda

1
Jus add left, top, rightbotton0 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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.