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

Android 使用Theme.AppCompat.Dialog时,操作栏看起来被剪切了,android,dialog,android-actionbar,styles,themes,Android,Dialog,Android Actionbar,Styles,Themes,我想让我的一个活动看起来像一个对话框,并使用了Theme.AppCompat.dialog主题,但它使它的动作栏看起来很糟糕(见下文) 现在背景被剪切到标题字符串的长度,我找不到任何主题属性来修复它( 我们可以做些什么来避免它 styles.xml的相关部分: <style name="DeviceListTheme" parent="Theme.AppCompat.Dialog"> <!-- All customizations that are NOT speci

我想让我的一个活动看起来像一个对话框,并使用了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>

首先,当我遇到这个问题时,我尝试使用
supportRequestWindowFeature(Window.FEATURE\u NO\u 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
可以重命名为任何您想要的名称。

使用DialogWhenLarge而不是标准对话框样式:

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

...

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

活动:

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"/>

结果:

它正在工作

<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");
   }

真的
@样式/全息旋转器
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u search);
setTitle(“批次”);
}

将代码粘贴到style.xml中,并将代码粘贴到与显示actionbarIs
选择设备相关的活动中
标题?或常规文本视图?@JuanjoVega-“选择设备”是manifest.xml中设置的标题。我从未尝试以任何方式分配自定义actionbar布局。如果您发现我的答案有用,您能接受吗?;)我没有在屏幕上看到任何东西!我必须设定一个固定的尺寸吗?不,你不应该设定一个固定的尺寸。那么我如何使它全宽?或者一个百分比。。。或者添加填充物什么的?您应该检查“@style/Theme.AppCompat.Light.Dialog”及其父级。有很多父母和维度。
<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");
   }