android पूर्णस्क्रीन गतिविधियों के लिए अनावश्यक रूट लेआउट से छुटकारा पाएं




android-layout android-activity (4)

हाँ, आप उनसे छुटकारा पा सकते हैं
यह नमूना उत्पन्न होता है, जैसा कि मैं देख सकता हूं, और जैसा कि मुझे पता है, मूल गतिविधि पहली बार उत्पन्न होती है और फिर पूर्णस्क्रीन सेटिंग्स जोड़ दी जाती है। आप किसी भी XML फ़ाइल में जिस चीज की आवश्यकता नहीं है उसे हटा सकते हैं। हालांकि, आपको मूल बातें रखना चाहिए:

    <?xml version="1.0" encoding="utf-8"?>
<YOUR_ROOT_LAYOUT
    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="YOUR.COMPANY.DOMAIN.MainActivity">

    <YOUR_VIEW
        android:id="@+id/SOME_UNIQUE_ID"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</YOUR_ROOT_LAYOUT>

मेरी रूट फाइल है और यह काम करती है:

        <?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:id="@+id/main_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:fitsSystemWindows="true"
        tools:context="tv.kenar.kenarapp.MainActivity">

        <android.support.v4.view.ViewPager
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    </android.support.constraint.ConstraintLayout>

पूर्णस्क्रीन गतिविधियों के लिए अनावश्यक रूट लेआउट से कैसे छुटकारा पाएं?

मेरे पास एक साधारण पूर्णस्क्रीन गतिविधि है। लेआउट इंस्पेक्टर एंड्रॉइड द्वारा प्रदान किए गए रूट लेआउट का एक बड़ा पदानुक्रम दिखाता है, मुझे पूर्णस्क्रीन में आवश्यकता नहीं है।

क्या मैं उनसे छुटकारा पा सकता हूं?

  • यदि हां, तो कैसे?
  • यदि नहीं, क्यों नहीं?

परीक्षण सेटअप

एंड्रॉइड स्टूडियो खोलें। एक नई परियोजना बनाएँ। डिफ़ॉल्ट सेटिंग्स स्वीकार करें। "खाली गतिविधि" चुनें। आपको यह अभिव्यक्ति मिलती है:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

आपको यह layout/activity_main.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"
    tools:context="com.blcknx.myapplication.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

जेनरेट रूट रूट टेम्पलेट्स देखने के लिए कॉल Tools > Android > Layout Inspector

इसे पूर्णस्क्रीन बनाने के लिए, लेआउट में MainActivity.java में एक आईडी MainActivity.java और MainActivity.java अपडेट MainActivity.java :

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView layout = findViewById(R.id.HelloWorld);
        layout.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LOW_PROFILE
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        );
    }
}

झंडे नेविगेशन को छुपा रहे हैं, लेकिन वे अप्रयुक्त लेआउट को नहीं हटाते हैं।

आपका उत्तर

एक साधारण टेक्स्ट व्यू का प्रयोग करें। इसे पूर्णस्क्रीन दिखाएं। Tools > Android > Layout Inspector द्वारा जांचें कि आपने रूट लेआउट को कितनी दूर हटा दिया है। एक स्क्रीनशॉट दिखाएं। अपना कोड दिखाएं


आप action_bar_container से छुटकारा पा सकते हैं जिसने अपनी गतिविधि की थीम को DarkActionBar से DarkActionBar बदल दिया है:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
</style>

फिर आपको निम्न पेड़ मिल जाएगा:

यदि आप और भी जाना चाहते हैं और ContentFrameLayout से छुटकारा पाएं, तो आप यह कर सकते हैं:


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val contentView = findViewById(android.R.id.content)
        val parent = contentView.parent as ViewGroup
        parent.removeView(contentView)
        LayoutInflater.from(this).inflate(R.layout.activity_main, parent)
    }

यह दृश्य पदानुक्रम पेड़ होगा:

सुनिश्चित नहीं है कि आपको android.R.id.content दृश्य को हटा देना चाहिए, शायद कुछ पुस्तकालय यह मान रहे हैं कि इस तरह के दृश्य मौजूद होना चाहिए।

action_mode_bar_stub रूप में: आपको उनके बारे में चिंतित नहीं होना चाहिए, जब तक वे ViewStub हैं, जो समग्र प्रदर्शन को प्रभावित नहीं करते हैं, क्योंकि वे ViewStub में ViewStub रूप से ViewStub हुए हैं।


हां, आप शायद ConstraintLayout तलाश में हैं। यह एक RelativeLayout के समान है, लेकिन अधिक संभावनाओं और उपयोग करने में आसान है। क्योंकि आप ConstraintLayout में हर जगह दृश्यों को स्थान दे सकते हैं, आप उन सभी अनावश्यक लेआउट से छुटकारा पा सकते हैं, इस प्रकार पदानुक्रम को फटकार सकते हैं।


गतिविधि कोड

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.Window;
import android.view.WindowManager;

public class ThirdActivity extends Activity {

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_third);
}
}

R.layout.third_activity

<?xml version="1.0" encoding="utf-8"?>
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ThirdActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World"
android:gravity="center">
 </TextView>

styles.xml

<style name="AppTheme2" parent="@android:style/Theme"/>

AndroidManifest.xml

<activity android:name=".ThirdActivity" android:theme="@style/AppTheme2">

कृपया इंडेंटेशन पर ध्यान न दें।

धन्यवाद,





android-view