Android 应用只占用屏幕的一部分
Android app takes only a part of screen
出于某种原因,我的应用程序只占用了屏幕的一部分。
简单的 onCreate 方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
}
布局稍微复杂一点:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/content_layout" >
<LinearLayout
android:id="@+id/mainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<LinearLayout
android:id="@+id/func_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@drawable/border_right"
android:orientation="vertical"
android:paddingLeft="@dimen/function_layout_padding"
android:paddingRight="@dimen/function_layout_padding" >
</LinearLayout>
<RelativeLayout
android:id="@+id/graph_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="#FFF"
android:alpha="1.0"
android:layout_weight="5">
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
我得到了这个:
我看不出有什么问题。以为是模拟器问题,但在真机上看起来是一样的。
好的,试试这个:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
您不需要下面的那个,因为它会创建这种 windows。
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
感谢@SunitKumarGupta @AnkitBansal 和@Maxouille。
问题出在主题中。
它是什么:
<style name="Theme.Transparent" parent="AppBaseTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
<item name="android:backgroundDimEnabled">false</item>
这里的问题是windowIsFloating
。删除它解决了这个问题。
出于某种原因,我的应用程序只占用了屏幕的一部分。
简单的 onCreate 方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
}
布局稍微复杂一点:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/content_layout" >
<LinearLayout
android:id="@+id/mainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<LinearLayout
android:id="@+id/func_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@drawable/border_right"
android:orientation="vertical"
android:paddingLeft="@dimen/function_layout_padding"
android:paddingRight="@dimen/function_layout_padding" >
</LinearLayout>
<RelativeLayout
android:id="@+id/graph_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="#FFF"
android:alpha="1.0"
android:layout_weight="5">
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
我得到了这个:
我看不出有什么问题。以为是模拟器问题,但在真机上看起来是一样的。
好的,试试这个:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
您不需要下面的那个,因为它会创建这种 windows。
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
感谢@SunitKumarGupta @AnkitBansal 和@Maxouille。
问题出在主题中。
它是什么:
<style name="Theme.Transparent" parent="AppBaseTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
<item name="android:backgroundDimEnabled">false</item>
这里的问题是windowIsFloating
。删除它解决了这个问题。