Невозможно добавить TextView в основной XML-макет - PullRequest
0 голосов
/ 09 февраля 2019

Я работаю над приложением и собираюсь добавить текстовое представление под представлением «Камера», чтобы я мог отображать там некоторый текст.Но по какой-то причине при попытке перетащить текстовое представление в макет оно не отображается на последнем экране.

Это мой код:

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

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/topLayout"
android:orientation="vertical"
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="match_parent">

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


  </com.google.android.CameraSourcePreview>


</LinearLayout>

Thxml layout output

Ответы [ 4 ]

0 голосов
/ 09 февраля 2019

Вместо использования LinearLayout я предлагаю использовать FrameLayout, который легко контролировать в вашем случае.Также возможно отобразить textView на CameraSourcePreview, используя следующий код

<?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>
0 голосов
/ 09 февраля 2019

Скорее всего, вы не можете добавить TextView из-за нехватки места на экране.

Вы используете LinearLayout, который отображает все свои виды один за другим либо по вертикали , либо по горизонтали .

Высота и ширина вашего CameraSourcePreview установлены на match_parent, что означает, что он будет полностью растягиваться на экране.Однако в LinearLayout это также означает, что нет места для размещения следующего вида, потому что он будет размещен вне экрана.

Вы можете добавить android:layout_weight="1" к своему CameraSourcePreview.Это позволит вашему TextView вписаться в LinearLayout, потому что это в основном ваш CameraSourcePreview, сообщающий другим, что он изменит свой размер, чтобы другие компоненты поместились на экране.

Но если вы не хотите, чтобы ваш CameraSourcePreview изменял свой размер в зависимости от других видов, вам следует рассмотреть возможность использования некоторых других макетов вместо LinearLayout.Возможно, такие, как ConstraintLayout или RelativeLayout, будут работать лучше, поскольку они позволяют перекрывать друг друга представления друг над другом.

0 голосов
/ 09 февраля 2019

Это происходит потому, что высота обзора камеры занимает все пространство на дисплее, вы можете использовать layout_weight для LinearLayout, чтобы освободить необходимое пространство для вашего 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>
0 голосов
/ 09 февраля 2019

Представление макета com.google.android.CameraSourcePreview высота установлена ​​как 'match_parent', поэтому она поглощает все пространство в окне просмотра.

Попробуйте указать конкретную высоту иВы должны увидеть текстовое представление, добавленное ниже CameraSourcePreview.

Надеюсь, это поможет.

...