我有一种奇怪的行为,如果我为应用程序添加背景然后返回到前台,则启动带有Theme.AppCompat.Dialog
的活动会被剪裁。我也在其他情况下观察到这种行为,例如不使用AppCompat。
我已经创建了一个测试应用程序(下面的代码)来演示此问题。我还包括截图以更好地说明问题。
这并非在所有设备上都会发生。运行Android 5.1.0的Nexus 5存在这个问题。 M看起来很好。
如您所见,标题区域较小,您可以在下面的活动中看到一些文字。如果您关闭对话框,对话框中缺失的部分将暂时重新出现,然后一切都会因您的预期而消失。
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startActivity(new Intent(this, DialogActivity.class));
}
}
DialogActivity.java
public class DialogActivity extends AppCompatActivity {
@Override
protected void onCreate (@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog);
}
}
DialogActivity
在我的清单中声明如下
<activity android:name=".DialogActivity"
android:theme="@style/DialogTheme"/>
activity_dialog.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="400dp"
android:layout_height="1000dp"
android:background="@color/dialogColor"
android:orientation="vertical">
</LinearLayout>
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="DialogTheme" parent="Theme.AppCompat.Dialog">
<!-- Customize your theme here. -->
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>
</style>
有什么想法吗?如果需要,我可以提供更多信息!
谢谢:)
<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.ben.movingdialog.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>
</RelativeLayout>
答案 0 :(得分:0)
要克服此裁剪,首先删除您的活动标题,然后在 setContentView() 之前添加以下 行
然后,将textView添加到活动布局的顶部,以服务器作为标题。requestWindowFeature(Window.FEATURE_NO_TITLE);