android – 如何创建像AppCompat AlertDialog Button这样的按钮?

我想覆盖系统窗口.

我正在尝试创建像AppCompat样式的按钮.

我试过这个:

XML

<LinearLayout 
    ...
    android:background="?android:attr/windowBackground"
/>

<!-- 
      My layout  ... 
      And button
      The buttonBarButtonStyle is in Theme.AppCompat and Theme.AppCompat.Light
 -->

 <Button 
      style="?attr/buttonBarButtonStyle"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Close" />

服务:

LayoutInflater inflater;

public void setTheme(int theme)
{
    ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(this, theme);
    inflater = LayoutInflater.from(this).cloneInContext(contextThemeWrapper);
}

public void onCreate(){
    boolean themeDark = getThemeDark();
    setTheme(themeDark ? R.style.Theme_AppCompat : R.style.Theme_AppCompat_Light);
    super.onCreate();
    createView(); // in this method i'm only inflating view using: inflater.inflate(layoutId, null); and adding view to window
}

它在AppCompat中工作,但在AppCompat.Light中没有.我有来自AppCompat风格的按钮(黑暗).截图:

黑暗(工作):

黑暗集中(工作):

光(工作):

光线聚焦(不工作):

在这张图片中,我们可以看到一切正常.然而在手机中它看起来很难看.

我想制作这个按钮(我在同一个应用程序中使用android.support.v7.app.AlertDialog创建了相同的主题AlertDialog)并且它看起来没问题:

我不知道为什么它不起作用.
我该怎么做?问题在于聚焦时按钮背景.我不知道为什么背景来自黑暗风格.
我试图设置AlertDialog.AppCompat.Light主题但不起作用.

解决方法:

我修好了.

我用android.support.v7.widget.AppCompatButton替换了Button.

<android.support.v7.widget.AppCompatButton 
      style="?attr/buttonBarButtonStyle"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Close" />

现在它正在运作.

上一篇:java.lang.UnsupportedOperationException:无法解析索引13处的属性:TypedValue {t = 0x2 / d = 0x7f010046 a = -1}


下一篇:Django REST framework框架介绍和基本使用