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

时间:2015-07-15 17:45:43

标签: android android-appcompat

我想覆盖系统窗口。

我试图创建像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风格的按钮(黑暗)。截图:

黑暗(有效):

Dark

黑暗集中(有效):

Dark Focused

光(工作):

Light

光线聚焦(不工作):

Light focused

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

我想制作这个按钮(我使用android.support.v7.app.AlertDialog在同一主题AlertDialog中创建了这个按钮)它看起来不错:

Light focused working

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

1 个答案:

答案 0 :(得分:8)

我修好了。

我将Button替换为android.support.v7.widget.AppCompatButton

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

现在它正在运作。