android 约束布局容器ConstraintLayout的初探

约束布局容器声明

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="qssq666.cn.constraintlayout.MainActivity">


</android.support.constraint.ConstraintLayout>


注意

  • 容器里面的控件如果设置了左右约束,将不支持设置match_parent 改用0dp代替
  • 代替属性Important: MATCH_PARENT is not supported for widgets contained in a ConstraintLayout, though similar behavior can be defined by using MATCH_CONSTRAINT with the corresponding left/right or top/bottom constraints being set to “parent”.`
  • Guideline控件在容器里面可以设置wrap_content

容器里面的控件位置摆放介绍

左上对齐 让容器里面的某控件相对于约束布局容器
实际上做上不需要加上属性默认就是,哈哈哈

        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"


f和它左边对齐 比如parent是整个屏幕,就需要设置这个,如果设置的是lefttoright parent那么肯定是看不到了因为parent是整个屏幕。

layout_constraintLeft_toLeftOf 

右下对齐 前提是别再设置toLeftOf和 toTopOf了

  app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintRight_toRightOf="parent"

居中对齐 所有属性 上下左右 都使用上即可.

        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"

手动操作实现上面效果,无图无真相..文字介绍太枯燥了,
选择控件将弹出4个圆圈 选择每一个圆圈往它那方靠近屏幕的方向拉去,如果没拉到屏幕变上 开发工具是不会产生控件的偏移动画的,而且松手又回来了, 那么全部拉好之后就是上面的代码效果,上下左右居中。

下一步学习 让一个控件和之前那个居中的控件的右边对齐



    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是居中的!"
        android:id="@+id/center_view"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        />

    <TextView
        android:text="我不跟随父亲我长度够长,我右边始终和中间view右边对齐"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintRight_toRightOf="@+id/center_view"

        />


//看到的效果就是  第二个控件在顶部,但是始终右边和中间的右边对齐。
手动拉如何产生这个效果呢?选择第二个控件的右边方向的圆圈连接到中间view的右边的圆圈。

找规律

app:layout_constraintRight_toRightOf 也就是 我的右边和哪个空间的右边对齐呢?如果填写为parent那就是和父容器的右边对齐,因此这里懂了吧。

仿RelativeLayout的属性用法

@id代表某控件
让当前控件在某控件右边
layout_toRightOf=@id
layout_constraintLeft_toRightOf=@id

让当前控件在某控件之下
layout_below =@id
app:layout_constraintTop_toBottomOf= =@id
手动拖控件方法 就是选择上面的某控件的底部圆圈连接 需要在他下面控件的上边圆圈

让当前控件和某控件底部对齐
layout_alignBottom =@id
layout_constraintBottom_toBottomOf=@id

手动拖控件方法 就是选择参考物的某控件的底部圆圈连接和另外一个想和他底部对齐的view底部圆圈进行连接

让当前控件和父控件右边对齐
layout_alignParentRight="true"
layout_constraintRight_toRightOf="parent"

举一反三,不再多介绍了。

仿LinearLayout权重

 
    <Button
        android:id="@+id/btn_0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ff0"
        android:text="Btn01"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp" />

    <Button
        android:id="@+id/btn_1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#f00"
        android:text="Btn02"
        app:layout_constraintLeft_toRightOf="@+id/btn_0"
        app:layout_constraintRight_toRightOf="parent" />



右边占据剩余的宽度。左边宽度就是包裹内容了, 需要右边父容器对齐又需要在左边容器的右边。 有时候只能用代码写,因为鼠标操作的话拦住了。

让空间水平铺满屏幕的属性

  android:layout_width="0dp"
 app:layout_constraintLeft_toLeftOf="parent"
 app:layout_constraintRight_toRightOf="parent" 

保持宽高比 16:9

*这里宽度是16高度9 也代表 H,16:9为何英文意思是相反的我就不知道了。

        app:layout_constraintDimensionRatio="16:9"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"

和下面这个一样

        app:layout_constraintDimensionRatio="H,16:9"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"

如果改成W

        app:layout_constraintDimensionRatio="W,16:9"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"

那么高度尺寸比宽度尺寸大。另外上面的left_toleft right_toright 都必须填写,否则就没法做到宽高比了,否则你写死高宽。另外务必把宽度和高度设置成这样android:layout_width="0dp" android:layout_height="0dp" 否则不会生效。
而我们的PercentFrameLayout在26已经不再推荐使用了.如果使用26的buildtool工具会提出现删除线。
那么让我们来怀恋一下百分比布局的16:9

app:layout_aspectRatio="177%"
app:layout_widthPercent="100%"
android:layout_height="0dp"
android:layout_width="match_parent"

多按钮等分权重

  • app:layout_constraintHorizontal_weight="1" 是控制权重比例的不填写此参数的时候权重就是1
  • 每一个控件的左边右边都要约束好,否则宽度还是原来自身的宽度,不会起作用

    <Button
        android:id="@+id/btn_0"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#f00"
        android:text="Btn01"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@id/btn_1" />

    <Button
        android:id="@+id/btn_1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#0f0"
        android:text="Btn01"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@id/btn_0"
        app:layout_constraintRight_toLeftOf="@+id/btn_2" />

    <Button
        android:id="@+id/btn_2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#00f"
        android:text="Btn01"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@id/btn_1"
        app:layout_constraintRight_toRightOf="parent" />

加上margin不受影响


    <Button
        android:id="@+id/btn_0"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#f00"
        android:text="Btn01"
        android:layout_margin="10dp"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@id/btn_1" />

    <Button
        android:id="@+id/btn_1"
        android:layout_width="0dp"
        android:layout_margin="10dp"
        android:layout_height="wrap_content"
        android:background="#0f0"
        android:text="Btn01"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@id/btn_0"
        app:layout_constraintRight_toLeftOf="@+id/btn_2" />

    <Button
        android:id="@+id/btn_2"
        android:layout_width="0dp"
        android:layout_margin="10dp"
        android:layout_height="wrap_content"
        android:background="#00f"
        android:text="Btn01"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@id/btn_1"
        app:layout_constraintRight_toRightOf="parent" />

写死宽度调试权重样式
app:layout_constraintHorizontal_chainStyle|layout_constraintVertical_chainStyle="spread|spread_inside|packed"

  • spread 必须配合width=0使用
  • spread_inside packed 是必须配合width height不等于0的时候使用
  • spread和不填写一样,因此意义不大
  • spread_inside 和英文意思一样 非写死宽度的剩余宽度分配中,平均分配左右两边 是靠边的,而packed是紧靠在一起,剩余的在整个控件之外,紧靠在一起。
  • 我以为可以做到相交和不相交处的权重等分,结果然并卵,也没啥用哈。
    参考代码

    <Button
        android:id="@+id/btn_0"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:background="#f00"
        android:text="Btn01"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@id/btn_1" />

    <Button
        android:id="@+id/btn_1"
        android:layout_width="50dp"
        android:layout_height="wrap_content"

        android:background="#0f0"
        android:text="Btn01"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@id/btn_0"
        app:layout_constraintRight_toLeftOf="@+id/btn_2" />

    <Button
        android:id="@+id/btn_2"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:background="#00f"
        android:text="Btn01"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@id/btn_1"
        app:layout_constraintRight_toRightOf="parent" />

约束 _bias的作用

这里注意把约束容器的高度设置为patch_parent不然app:layout_constraintVertical_bias就测试不出来了

    app:layout_constraintVertical_bias="0.9"
        app:layout_constraintHorizontal_bias="0.9"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
  • 0 -1距离是控制x或者y方向的 的右边(Horizontal)或者底边(Vertical)的百分比距离,1则是完全到右边了。
  • 如果不配合layout_constraintBottom_toBottomOf righttoright left toleft bottomtoleft就没法测试效果了哈。上面的东西如果没设置bias是居中的,设置之后就开始被拉扯。
  • bias的意思是偏向于

辅助线控件的用法

`android.support.constraint.Guideline

<android.support.constraint.Guideline
        android:id="@+id/guideline_w"

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horzontal"
        app:layout_constraintGuide_begin="50dp"
        app:layout_constraintGuide_end="50dp"
        app:layout_constraintGuide_percent="0.5"
        />

主要属性有3个

      android:orientation="horzontal"
        app:layout_constraintGuide_begin="50dp"
        app:layout_constraintGuide_end="50dp"
        app:layout_constraintGuide_percent="0.5"
  • 如果设置了百分比那么begin end都没卵用了, 百分比在哪里 begin在哪里由方向控制,不再多叙述。
  • 辅助线和我们安卓开发平时应到的隐藏控件做辅助完全雷同啊,我也是这么玩的有时候需求没法解决就弄一个隐藏的view,然后below它的下面。
  • 辅助线控件不可见

还有一些属性没有使用介绍,本人边写边学了一个下午...眼睛都花了

杂项学习

tools:layout_editor_absoluteY 是干啥的? 它只是用来开发工具显示控制偏移用的,下面这个代码得意思是让当前控件距离上边51dp但是实际上运行就不是你看到的开发工具看到的预览效果了。

    tools:layout_editor_absoluteY="51dp"

实际上什么约束都没有用上就会出现下面的提示 但是运行是正常的。 是因为垂直或者水平方向没有添加约束

 This view is not constrained vertically: at runtime it will jump to the 
 left unless you add a vertical constraint less... 
 (Ctrl+F1)
 

 The layout editor allows you to place widgets anywhere on the canvas, 
 and it records the current position with designtime attributes (such aslayout_editor_absoluteX
.) 
 These attributes are **not** applied at runtime, so if you push your 
 layout on a device, the widgets may appear in a different location than 
 shown in the editor. To fix this, make sure a widget has both horizontal 
 and vertical constraints by dragging from the edge connections.

此视图不受垂直约束:在运行时它将跳转到
向左,除非您添加了一个垂直约束…
(Ctrl + F1)
布局编辑器允许您将小部件放置在画布上的任何位置,
它记录当前位置和设计时间的属性(如aslayout_editor_absolutex
。)
这些属性在运行时不***,所以如果你推你的
布局在设备上,小部件可能出现在不同的位置。
在编辑器中显示。要解决此问题,请确保小部件具有两个水平。
和从边缘连接拖动的垂直约束。

本人写布局发现存在的问题和无法实现的方案记录

  • 水平排列布局 左边是头像 中间是 纵向的3行文字, 右边是一个关注按钮 ,左中右都是应该居中的。

左边头像 ,中间2 到3个 上下垂直排列 view 居中。右边按钮居中的结构, 上下view无法控制居中,有知道的大神求指导 。约束的情况无法控制

  • 中间垂直排列的某个view 隐藏了也就无法做到类似自动堆在一起。所以线性布局等布局还是有很多存在的意义的。

约束布局无法完美解决所有布局,必要的时候还是要借助其他布局特别是线性布局。

对比

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <data />

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="2dp"
        android:orientation="horizontal">
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerview_menu"
            android:layout_width="100dp"
            app:layout_constraintLeft_toLeftOf="parent"
            android:layout_height="match_parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintWidth_percent="0.3"
            />

        <FrameLayout
            android:id="@+id/fragment_space_inner"
            android:layout_width="0dp"
            android:layout_height="match_parent"

            android:="@+id/recyclerview_menu"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toRightOf="@+id/recyclerview_menu"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent">


        </FrameLayout>



    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

    <!--
    <?xml version="1.0" encoding="utf-8"?>
    <androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".uipage.my.MyFragment">
        <androidx.appcompat.widget.LinearLayoutCompat
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:divider="@drawable/divider"
            android:orientation="vertical"
            app:dividerPadding="1dp"
            app:showDividers="middle|beginning|end"
            >


            <LinearLayout
                android:id="@+id/btn_print_test"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingBottom="10dip"
                android:paddingLeft="5dip"
                android:paddingTop="10dip" >

                <ImageView
                    android:layout_width="35dp"
                    android:layout_height="35dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/ic_launcher_foreground" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="10dp"
                    android:gravity="center"
                    android:text="打印测试"
                    android:textColor="@color/black"
                    android:textSize="15dip" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/ll_devanning_box"
                android:orientation="horizontal"
                android:paddingBottom="10dip"
                android:paddingLeft="5dip"
                android:paddingTop="10dip" >

                <ImageView
                    android:layout_width="35dp"
                    android:layout_height="35dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/ic_launcher_foreground" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="10dp"
                    android:gravity="center"
                    android:text="拆箱"
                    android:textColor="@color/black"
                    android:textSize="15dip" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingBottom="10dip"
                android:paddingLeft="5dip"
                android:paddingTop="10dip" >

                <ImageView
                    android:layout_width="35dp"
                    android:layout_height="35dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/ic_launcher_foreground" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="10dp"
                    android:gravity="center"
                    android:text="Test"
                    android:textColor="@color/black"
                    android:textSize="15dip" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingBottom="10dip"
                android:paddingLeft="5dip"
                android:paddingTop="10dip" >

                <ImageView
                    android:layout_width="35dp"
                    android:layout_height="35dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/ic_launcher_foreground" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="10dp"
                    android:gravity="center"
                    android:text="Test"
                    android:textColor="@color/black"
                    android:textSize="15dip" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingBottom="10dip"
                android:paddingLeft="5dip"
                android:paddingTop="10dip" >

                <ImageView
                    android:layout_width="35dp"
                    android:layout_height="35dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/ic_launcher_foreground" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="10dp"
                    android:gravity="center"
                    android:text="Test"
                    android:textColor="@color/black"
                    android:textSize="15dip" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingBottom="10dip"
                android:paddingLeft="5dip"
                android:paddingTop="10dip" >

                <ImageView
                    android:layout_width="35dp"
                    android:layout_height="35dp"
                    android:scaleType="fitCenter"
                    android:src="@drawable/ic_launcher_foreground" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="10dp"
                    android:gravity="center"
                    android:text="Test"
                    android:textColor="@color/black"
                    android:textSize="15dip" />
            </LinearLayout>
        </androidx.appcompat.widget.LinearLayoutCompat>

    </androidx.core.widget.NestedScrollView>
    -->

和百分比

<?xml version="1.0" encoding="utf-8"?>
<layout>

    <data />

    <android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="2dp"

        android:orientation="horizontal">


        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerview_menu"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            app:layout_widthPercent="30%" />

        <FrameLayout
            android:id="@+id/fragment_space_inner"

            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/recyclerview_menu"

            >


        </FrameLayout>


    </android.support.percent.PercentRelativeLayout>
</layout>

参考链接

http://blog.csdn.net/lmj623565791/article/details/78011599
http://www.jianshu.com/p/111b2fbd333e

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容