如何包含一个查看最佳方式并调用它?

时间:2017-07-05 08:59:22

标签: java android xml

我正在开发Android应用。在主活动屏幕上有一个视图,它调用View类的onDraw方法。但是包含视图的正确方法是什么?

  1. 在xml中包含带标签的视图。视图已绘制。

  2. 包含带有invalidate()的视图,并在XML-File中:onDraw被调用两次

  3. 在XML文件中包含带有invalidate()且没有标记的视图:没有绘制任何内容

  4. 使用setContentView()包含视图:绘制视图,但不再有ActionBar

  5. 你能给我一个提示如何解决吗? 因为我们想要一些东西,所以视图能够: 1.如果我们通过单击操作栏菜单转到另一个活动,然后使用向上按钮返回,则应再次显示旧视图,而不是再次绘制。怎么可能。

    1. 通过单击另一个Activity的按钮对MainActivity进行Intent,应该调用onDraw方法。
    2. 我希望有人可以帮助我:)。

      主要活动的XML:

          <?xml version="1.0" encoding="utf-8"?>
      <android.support.design.widget.CoordinatorLayout 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="MainActivity">
      
          <android.support.design.widget.AppBarLayout
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:theme="@style/AppTheme.AppBarOverlay">
      
              <android.support.v7.widget.Toolbar
                  android:id="@+id/toolbar"
                  android:layout_width="match_parent"
                  android:layout_height="?attr/actionBarSize"
                  android:background="?attr/colorPrimary"
                  app:popupTheme="@style/AppTheme.PopupOverlay" />
      
          </android.support.design.widget.AppBarLayout>
      
          <include layout="@layout/content_main" />
      
      </android.support.design.widget.CoordinatorLayout>
      

      主要活动的内容XML:

              <?xml version="1.0" encoding="utf-8"?>
      <android.support.constraint.ConstraintLayout 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"
          app:layout_behavior="@string/appbar_scrolling_view_behavior"
          tools:context="MainActivity"
          tools:showIn="@layout/activity_main">
      
      
         <view
             android:id="@+id/view"
             class="MyView"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintHorizontal_bias="0.437"
             app:layout_constraintLeft_toLeftOf="parent"
             app:layout_constraintRight_toRightOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
      
      </android.support.constraint.ConstraintLayout>
      

      主要行动

      public class MainActivity extends AppCompatActivity {
      
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
      
              //XML-Layout über die Ressourcen Variable holen
              setContentView(R.layout.activity_main);
      
              //Toolbar als ActionBar hinzufügen
              Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
              setSupportActionBar(toolbar);
      
              //Logo in Action Bar integrieren
              getSupportActionBar().setDisplayShowHomeEnabled(true);
              getSupportActionBar().setLogo(R.drawable.hsd_logo_weiss);
              getSupportActionBar().setDisplayUseLogoEnabled(true);
      }
      }
      

1 个答案:

答案 0 :(得分:0)

如果没有理由不这样做...
正如你在第1点所说的那样。这是最简单的方法,一旦你在xml中编写它并验证视图是经常绘制的,你可以通过R对象引用它

findviewbyid(R.id.<viewID>)

注意父母,确保你的视图元素在他们应该的位置,在正确的父母下面

至于意图之间的切换,我不知道为什么它表现得像你描述的......前段时间我像你一样使用动作栏,但我没有那些问题。如果可以的话,尽量不要使用onDraw()方法。

至少,您可以将其从问题的原因中删除:)