我应该调用哪种方法来了解一个Activity是否有contentView(一旦调用 setContentView()方法)?
答案 0 :(得分:514)
this.getWindow().getDecorView().findViewById(android.R.id.content)
或
this.findViewById(android.R.id.content)
或
this.findViewById(android.R.id.content).getRootView()
答案 1 :(得分:21)
如果您在布局中添加了ID,则可以返回视图。
<RelativeLayout
android:id="@+id/my_relative_layout_id"
从findViewById中调用它......
答案 2 :(得分:11)
怎么样
View view = Activity.getCurrentFocus();
答案 3 :(得分:10)
您可以尝试View.getRootView()
。
答案 4 :(得分:5)
您还可以覆盖onContentChanged()
,其中setContentView()
被调用时会被触发。
答案 5 :(得分:1)
没有“isContentViewSet”方法。您可以在setContentView之前将一些伪requestWindowFeature调用放入try / catch块中,如下所示:
try { requestWindowFeature(Window.FEATURE_CONTEXT_MENU); setContentView(...) } catch (AndroidRuntimeException e) { // do smth or nothing }
如果已经设置了内容视图,requestWindowFeature将抛出异常。
答案 6 :(得分:0)
Kotlin
this.findViewById<View>(android.R.id.content)
.rootView
.setBackgroundColor(ContextCompat.getColor(this, R.color.black))
答案 7 :(得分:-4)
我发现的最佳选择和不太干扰的是在xml中设置标签参数,例如
PHONE XML LAYOUT
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="phone"/>
平板电脑XML布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="tablet">
...
</RelativeLayout>
然后在您的活动类中调用它:
View viewPager = findViewById(R.id.pager);
Log.d(getClass().getSimpleName(), String.valueOf(viewPager.getTag()));
希望它适用于你。