【问题标题】:Action bar looks cut while using Theme.AppCompat.Dialog使用 Theme.AppCompat.Dialog 时操作栏看起来很剪裁
【发布时间】:2015-04-19 09:05:37
【问题描述】:

我希望让我的一项活动看起来像一个对话框,并为其使用了 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);

【问题讨论】:

  • 粘贴 style.xml 中的代码和显示 actionbar 相关的 activity 中的代码
  • 标题是Select device吗?还是常规的 TextView?
  • @JuanjoVega - “选择设备”是 manifest.xml 中设置的标题。我没有尝试以任何方式分配自定义操作栏布局。
  • 如果您觉得我的回答有用,您能接受吗? ;)

标签: android dialog android-actionbar styles themes


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    使用 DialogWhenLarge 而不是标准的 Dialog 样式:

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

    【讨论】:

      【解决方案3】:

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

      活动:

      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/Theme.AppCompat.Light.Dialog' 及其父项。有很多父母和维度。
      【解决方案4】:

      它的工作原理

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-13
        • 1970-01-01
        • 2013-04-20
        • 2015-03-02
        • 1970-01-01
        • 2017-05-01
        • 2017-05-01
        • 2021-01-06
        相关资源
        最近更新 更多