How to get Activity's content view?

前端 未结 8 647
一向
一向 2020-11-27 09:22

What method should I call to know if an Activity has its contentView (once the method setContentView() has been called)?

相关标签:
8条回答
  • 2020-11-27 09:56

    How about

    View view = Activity.getCurrentFocus();
    
    0 讨论(0)
  • 2020-11-27 09:56

    You may want to try View.getRootView().

    0 讨论(0)
  • 2020-11-27 09:57

    There is no "isContentViewSet" method. You may put some dummy requestWindowFeature call into try/catch block before setContentView like this:

    try {
      requestWindowFeature(Window.FEATURE_CONTEXT_MENU);
      setContentView(...)
    } catch (AndroidRuntimeException e) {
      // do smth or nothing
    }
    

    If content view was already set, requestWindowFeature will throw an exception.

    0 讨论(0)
  • 2020-11-27 10:00

    If you are using Kotlin

        this.findViewById<View>(android.R.id.content)
                             .rootView
                             .setBackgroundColor(ContextCompat.getColor(this, R.color.black))
    
    0 讨论(0)
  • 2020-11-27 10:02

    You can get the view Back if you put an ID to your Layout.

    <RelativeLayout
        android:id="@+id/my_relative_layout_id"
    

    And call it from findViewById ...

    0 讨论(0)
  • 2020-11-27 10:14

    The best option I found and the less intrusive, is to set a tag param in your xml, like

    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"/>
    

    TABLET XML LAYOUT

    <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>
    

    and then call this in your activity class:

    View viewPager = findViewById(R.id.pager);
    Log.d(getClass().getSimpleName(), String.valueOf(viewPager.getTag()));
    

    Hope it works for u.

    0 讨论(0)
提交回复
热议问题