使用Theme.AppCompat.Dialog时,操作栏看起来被剪切

时间:2015-02-18 11:20:15

标签: android dialog android-actionbar styles themes

我希望让我的一个活动看起来像一个对话框,并使用了一个Theme.AppCompat.Dialog主题,但它使得它的操作栏看起来很糟糕(见下文)。

现在背景被剪切到标题字符串的长度,我找不到任何主题属性来修复它。(

可以做些什么来避免它?

styles.xml的相关部分:

<style name="DeviceListTheme" parent="Theme.AppCompat.Dialog">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

我使用以下代码启动活动:

Intent intent = new Intent(this, DeviceListActivity.class);
startActivityForResult(intent, REQUEST_CONNECT_DEVICE);

4 个答案:

答案 0 :(得分:4)

首先,当我遇到此问题时,我尝试使用supportRequestWindowFeature(Window.FEATURE_NO_TITLE);,但这对我没用,并且没有效果。

删除对话框活动顶部栏的替代方法是创建自定义样式并将其应用于该活动。

styles.xml中,创建一个新的样式:

<style name="MyCustomDialog" parent="Base.Theme.AppCompat.Light.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

现在,在AndroidManifest.xml中,将android:theme="@style/MyCustomDialog"添加到您的活动中。

当然,MyCustomDialog可以重命名为您想要的任何内容。

答案 1 :(得分:0)

使用DialogWhenLarge代替标准对话框样式:

<style name="MyDialogTheme" parent="@style/Theme.AppCompat.Light.DialogWhenLarge">
...
</style>

答案 2 :(得分:0)

我用这种方式解决了同样的问题:

的活动:

public class MyActivity extends android.support.v4.app.FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_layout);
        setTitle("View task");
    }
}

主题:

<style name="Theme.MyDialog" parent="@style/Theme.AppCompat.Light.Dialog">
    <item name="android:windowNoTitle">false</item>
</style>

清单:

<activity android:name=".MyActivity" android:theme="@style/Theme.MyDialog"/>

结果:

答案 3 :(得分:0)

enter image description here

正在运作

<style name="AppThemeDialog" parent="Theme.AppCompat.Light.Dialog">
       <item name="android:windowNoTitle">true</item>
       <item name="android:spinnerStyle">@style/holoSpinner</item>
</style>

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_search);
       setTitle("Batches");
   }