我正在开发Android应用。在主活动屏幕上有一个视图,它调用View类的onDraw方法。但是包含视图的正确方法是什么?
在xml中包含带标签的视图。视图已绘制。
包含带有invalidate()的视图,并在XML-File中:onDraw被调用两次
在XML文件中包含带有invalidate()且没有标记的视图:没有绘制任何内容
使用setContentView()包含视图:绘制视图,但不再有ActionBar
你能给我一个提示如何解决吗? 因为我们想要一些东西,所以视图能够: 1.如果我们通过单击操作栏菜单转到另一个活动,然后使用向上按钮返回,则应再次显示旧视图,而不是再次绘制。怎么可能。
我希望有人可以帮助我:)。
主要活动的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);
}
}
答案 0 :(得分:0)
如果没有理由不这样做...
正如你在第1点所说的那样。这是最简单的方法,一旦你在xml中编写它并验证视图是经常绘制的,你可以通过R对象引用它
findviewbyid(R.id.<viewID>)
注意父母,确保你的视图元素在他们应该的位置,在正确的父母下面
至于意图之间的切换,我不知道为什么它表现得像你描述的......前段时间我像你一样使用动作栏,但我没有那些问题。如果可以的话,尽量不要使用onDraw()方法。
至少,您可以将其从问题的原因中删除:)