无法将TextView添加到主xml布局中

时间:2019-02-09 18:13:43

标签: android android-layout android-camera android-view

我一直在开发一个应用程序,希望在“相机”视图下方添加一个文本视图,以便可以在其中显示一些文本。 但是,由于某种原因,当试图将文本视图拖动到布局中时,它不会显示在最终屏幕上。

这是我的代码:

let destVC = YourDestinationVC()
destVC.content = "content pertaining to cell selected"

// if the segue name is called segueOne
destinationVC.performSegueWithIdentifier("segueOne", sender: self)

Thxml layout output

4 个答案:

答案 0 :(得分:1)

布局视图 com.google.android.CameraSourcePreview 的高度设置为'match_parent',因此它占用了视图端口上的所有空间。

尝试提供特定的高度,您应该能够看到在CameraSourcePreview下面添加的textview。

希望有帮助。

答案 1 :(得分:0)

很可能由于屏幕上没有足够的空间而无法添加TextView

您正在使用LinearLayout,它以 vertical horizo​​ntal 的方式一个接一个地显示所有视图。

您的CameraSourcePreview的高度和宽度设置为match_parent,这意味着它将在屏幕上完全伸展。但是,在LinearLayout中,这也意味着没有空间可以放置下一个视图,因为它将被放置在屏幕之外。

您可以将android:layout_weight="1"添加到CameraSourcePreview中。这将使您的TextView能够适合LinearLayout,因为基本上是您的CameraSourcePreview告诉其他人,它将调整自身大小以允许其他组件适合屏幕。

但是,如果您不希望CameraSourcePreview根据其他视图调整自身大小,则应考虑使用其他布局而不是LinearLayout。诸如ConstraintLayoutRelativeLayout之类的方法可能会更好,因为它们允许彼此重叠的视图。

答案 2 :(得分:0)

之所以发生这种情况,是因为摄像机视图的高度占据了显示屏上的整个空间,您可以对LinearLayout使用layout_weight来为TextView留一些必要的空间。

只需使CameraSourcePreview的高度等于0dp并添加一个属性

android:layout_weight="1"

所以它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/topLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
android:orientation="vertical">

<com.google.android.CameraSourcePreview
    android:id="@+id/preview"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1">

    <com.google.android.GraphicOverlay
        android:id="@+id/faceOverlay"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</com.google.android.CameraSourcePreview>

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="some text here" />

</LinearLayout>

答案 3 :(得分:0)

我建议不要使用LinearLayout,而应使用易于控制的FrameLayout。通过使用以下代码,也可以在CameraSourcePreview上显示textView

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/topLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">

<com.google.android.CameraSourcePreview
    android:id="@+id/preview"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_gravity ="center">
    <com.google.android.GraphicOverlay
        android:id="@+id/faceOverlay"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</com.google.android.CameraSourcePreview>
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="some text here"
    android:layout_gravity ="center|bottom" />

</FrameLayout>