AlertDialog:上下文ActionBar出现在状态栏

时间:2015-04-28 22:03:26

标签: android android-alertdialog android-appcompat contextual-action-bar appcompat-v7-r22.1

长按添加到AlertDialog的EditText通常应显示上下文ActionBar,但在使用AppCompat时,上下文ActionBar会出现在状态栏后面。上下文ActionBar也不可点击。

直接从活动中显示AlertDialog时可以看到相同的行为。

测试了Android版本: 4.4,5.0,5.1
AppCompat版本: 22.1.1和22.1.0

源代码(Gradle模块): Google Drive

我尝试添加<item name="android:windowFullscreen">false</item>,但这并不能解决问题。

我可以做什么使上下文ActionBar看起来正常?

ActionMode shown behind status-bar

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.button).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        EditText customView = new EditText(this);
        customView.setText("Select me");

        AlertDialog.Builder test = new AlertDialog.Builder(this);
        test.setView(customView);
        test.setPositiveButton("Close", null);
        test.setTitle("ActionMode test");
        test.show();
    }
}

styles.xml

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="alertDialogTheme">@style/Theme.Test.AlertDialog</item>
    </style>

    <style name="Theme.Test.AlertDialog" parent="@style/Theme.AppCompat.Light.Dialog.Alert">
        <!-- Removing android:windowFullscreen yields same result -->
        <item name="android:windowFullscreen">false</item>
    </style>

</resources>

1 个答案:

答案 0 :(得分:0)

正如他所说的那样,罗尔夫创造了AOSP Issue 170658。该问题已被关闭为170105的副本。问题170105表示问题已在内部修复,并将出现在AppCompat库的未来版本中。没有迹象表明何时可能发生这种释放。