我将myClass 的继承从activity更改为appCompatActivity 。最初有一个带有微调器的菜单,如下所示:
myClass.java
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.messages, menu);
MenuItem item = menu.findItem(R.id.menuTxtSize);
Spinner spinner = (Spinner) item.getActionView();
int index = 1;
spinner.setSelection(index);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
OTHER CODE
我的messages.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:title="@string/string_txt_size"
android:id="@+id/menuTxtSize"
android:showAsAction="always"
android:actionLayout="@layout/view_spinner" />
<item
android:id="@+id/menu_item_refresh"
android:showAsAction="always"
android:title="@string/action_refresh"
android:icon="@drawable/ic_refresh_24dp" />
</menu>
我的spinner.xml
<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/txt_size_values"
/>
用于微调器的数组
<string-array name="txt_size_values">
<item>Мелко</item>
<item>Средне</item>
<item>Крупно</item>
</string-array>
一切都很好看
要转到appkompat我改变了:
1。在myClass中
Spinner spinner = (Spinner) item.getActionView();
到AppCompatSpinner spinner = (AppCompatSpinner) MenuItemCompat.getActionView(item);
2. 在messeges.xml中添加 app: -namespace并添加 app:actionViewClass
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:title="@string/string_txt_size"
android:id="@+id/menuTxtSize"
app:showAsAction="ifRoom"
app:actionViewClass="android.support.v7.widget.AppCompatSpinner"
android:actionLayout="@layout/view_spinner" />
<item
android:id="@+id/menu_item_refresh"
app:showAsAction="ifRoom"
android:title="@string/action_refresh"
android:icon="@drawable/ic_refresh_24dp" />
</menu>
3. 我还将应用主题更改为android:theme="Theme.AppCompat"
结果我得到了以下
文字消失了。微调器无法点击
如何解决这个问题?感谢