2

我正在使用具有以下 xml 的 DrawerLayout:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="horizontal" >
  <android.opengl.GLSurfaceView android:id="@+id/glsurfaceview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  <FrameLayout
    android:id="@+id/detail_container"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="end" >
  </FrameLayout>
  <View
    android:layout_width="140dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#0000ff" />
</android.support.v4.widget.DrawerLayout>

这个想法是我有一个主视图,即 Opengl 和每一侧的抽屉。“detail_container”以编程方式填充以下 onCreate() 中的片段(在 Scala 中):

override def onCreate(bundle: Bundle) {
    super.onCreate(bundle)
    setContentView(R.layout.main)//important: this is how you specify the xml file that defines the layout for this activity

    def setupActionBar(){
      val bar = getActionBar
      bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)
      bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE)
      val mapTab = bar.newTab().setText("Map")
      val detailTab = bar.newTab().setText("Detail")
      mapTab.setTabListener(new MyTabsListener)
      detailTab.setTabListener(new MyTabsListener)
      bar.addTab(mapTab)
      bar.addTab(detailTab)
      bar.show()
    }

    def setupOglRenderer(){
      findViewById(R.id.glsurfaceview) match {
        case v: GLSurfaceView => {
          val renderer = new OpenGlRenderer(this, R.drawable.aqua_oval)
          v.setRenderer(renderer)
        }
        case _ =>
      }
    }

    def setupDetailFragment(){
      if(findViewById(R.id.detail_container) != null){
        if(bundle == null){//don't do anything if restoring
          val detailFrag = new DetailFrag
          detailFrag.setArguments(getIntent.getExtras)
          getSupportFragmentManager.beginTransaction().add(R.id.detail_container, detailFrag).commit()
        }
      }
    }

    setupActionBar()
    setupOglRenderer()
    setupDetailFragment()
  }

详细片段类具有以下 onCreateView:

override def onCreateView(inflater: LayoutInflater, container: ViewGroup, savedInstanceState: Bundle): View = {
  val v = inflater.inflate(R.layout.detail_fragment, container, false)
  v.setBackgroundColor(0x557B68EE)
  //v.setBackgroundResource(R.drawable.aqua_sqaure)
  v.getBackground().setColorFilter(Color.parseColor("#00ff00"), PorterDuff.Mode.DARKEN)

  v
}

这一切都很好,但如果我尝试将九个补丁设置为背景,我的 UI 组件不会显示。我尝试在 onCreateView 和 detail_container 的 xml 中设置背景可绘制对象:

android:background="@drawable/aqua_sqaure"

在这两种情况下,我只能看到背景图像。如果我删除背景,我可以看到我的 UI 组件。我可以很好地设置背景颜色,只有图像会隐藏或覆盖 UI。

我究竟做错了什么?

任何帮助将不胜感激。谢谢

更新:这似乎与我使用的九个补丁有关。使用其他九个补丁图像时,代码按预期运行。

4

0 回答 0