フルスクリーン アクティビティの不要なルート レイアウトを削除するにはどうすればよいでしょうか?
シンプルなフルスクリーン アクティビティがあります。レイアウト インスペクターには、Android によって提供されるルート レイアウトの大きな階層が表示されますが、これはフルスクリーンでは必要ありません。
それらを取り除くことはできますか?
- はいの場合、どのようにですか?
- いいえの場合、その理由は何ですか?
テストのセットアップ
Android Studio を開きます。新しいプロジェクトを作成します。デフォルト設定を受け入れます。「空のアクティビティ」を選択します。次のマニフェストが表示されます。
<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
生成されたルート テンプレートを表示するには、を呼び出します。
HelloWorld
フルスクリーンにするには、レイアウト内の TextView にID を追加して更新するだけです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
);
}
}
フラグはナビゲーションを非表示にしますが、未使用のレイアウトは削除されません。
あなたの答え
シンプルな TextView を使用します。全画面で表示します。Tools > Android > Layout Inspector
ルート レイアウトをどの程度削除したかを確認します。スクリーンショットを表示します。コードを表示します。
ベストアンサー1
action_bar_container
アクティビティのテーマを から に変更すると、DarkActionBar
元に戻すことができますNoActionBar
。
<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
が、一部のライブラリではそのようなビューが存在すると想定している可能性があります。
sについてaction_mode_bar_stub
は、心配する必要はありません。ViewStub
これらは、ビュー階層に遅延インフレートされるため、全体的なパフォーマンスには影響しません。