2014-10-23 3 views
0

У меня возникла проблема с размещением GLSurfaceView между другими макетами, как выяснилось - с GLSurfaceView это невозможно. Поэтому я заменил GLSurfaceView на TextureView, но проблема не была решена.Как правильно разместить TextureView между другими макетами в Android?

У меня есть такая структура в моей основной раскладке:

<RelativeLayout android:id="@+id/mainEngineLayout" 
       android:layout_width="match_parent" 
       android:layout_height="fill_parent" 
       android:background="@android:color/transparent" 
       tools:context=".activities.MyActivity"> 

    <com.myapplication.views.openGL.myGLTextureView 
      android:id="@+id/myGLTextureView" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_marginLeft="66dp" 
      android:layout_marginRight="66dp"/> 

    <LinearLayout 
      android:id="@+id/leftButtonsLayout" 
      android:layout_height="fill_parent" 
      android:layout_width="66dp" 
      android:layout_alignParentLeft="true" 
      android:orientation="vertical" 
      android:background="#b7b8b0"> 

     <ImageButton android:layout_width="66dp" .../> 
     <ImageButton android:layout_width="66dp" .../> 

    </LinearLayout> 

    <FrameLayout 
      android:layout_height="fill_parent" 
      android:id="@+id/rightLayout" 
      android:layout_width="wrap_content" 
      android:layout_alignParentRight="true" 
      android:orientation="vertical" 
      android:background="#b7b8b0"> 

     <ImageButton android:layout_width="66dp" .../> 
     <ImageButton android:layout_width="66dp" .../> 

    </FrameLayout>  

</RelativeLayout> 

И, наконец, я хочу, чтобы получить результат, как:

enter image description here

Проблема заключается в том, что на некоторых устройствах, которые я получил проблему не с отображается TextureView вообще, так что есть черное поле между левой и правой макетами.

Например, он работает в моем Samsung S3 и эмуляторах, и он не работает должным образом на Xperia. Я думал, что причина может быть в разных темах, но я поставил тему в моем файле манифеста, как:

<application 
    android:allowBackup="true" 
    android:configChanges="orientation|screenSize" 
    android:theme="@style/CustomHoloThemeNoActionBar" 
    android:screenOrientation="sensorLandscape" 
    android:largeHeap="true"> 
    <activity 
     android:theme="@style/CustomHoloThemeNoActionBar" 

где "CustomHoloThemeNoActionBar" parent="@android:style/Theme.Holo.Light"

Не могли бы вы посоветовать, что может вызвать такие проблемы?

+0

я думаю, что вы можете использовать Android: layout_toRightOf, чтобы получить макет право .. . and android: layout_toLeftOf, чтобы получить ваш макет, оставленный для ... заменить точки с идентификатором пыльника id –

+0

В случае использования layout_toRightOf и layout_toLeftOf мне нужно разместить myGLTextureView после «левых» и «правильных» макетов, которые мне не нужны, Я хотел бы иметь TextureView в качестве первого макета, например фона. – XZen

+0

android: gravity = "center" –

ответ

0

я думаю, вы должны установить гравитацию или (layout_gravity) до центра,

ИТС зависит в том, как вы хотите выглядеть

enter image description here

, если вы хотите разделить их, чтобы установить процент вы можете использовать вес недвижимость

enter image description here

+0

К сожалению, это не помогло. На самом деле я не понял, почему гравитация может повлиять на проблему с «перекрытием» TextureView другими макетами – XZen

+0

, а затем попробуйте андроид: layout_centerInParent = «true» или orroid: layout_centerHorizontal = «true». Я надеюсь, что эта работа с вами –