web-dev-qa-db-ja.com

appcompatライブラリを使用しない場合は、Android:showAsActionを使用する必要があります

私は奇妙な問題があります、私は私のAndroidアプリケーションでこのようにmenu.xmlファイルを使用していました:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
  xmlns:compat="http://schemas.Android.com/apk/res-auto" >

    <item
        Android:id="@+id/action_refresh"
        Android:orderInCategory="100"
        Android:title="@string/action_refresh"
        Android:icon="@drawable/toc"
        compat:showAsAction="always"/>
</menu>

うまくいきましたが、数日前にEclipseを最新バージョンに更新していたところ、app:showAsAction = "always"でエラーが表示されました。

Appcompatライブラリを使用せず、その後アクションバーアイコンをオーバーフローバーに移動して、アクションバーにをまったく表示しない場合は、Android:showAsActionを使用する必要があります。

とにかく、appcompatライブラリは私の基本スタイルの親です。それを解決するにはどうすればよいですか?

16

あなたは3つのことをする必要があります-

  1. これら3つを追加しますxmlns:tools="schemas.Android.com/tools" tools:context="com.example.sample.YourActivity" xmlns:yourapp="http://schemas.Android.com/apk/res-auto"から<menu> 鬼ごっこ

    いつものxmlns:Android="http://schemas.Android.com/apk/res/Android"

  2. 追加 yourapp:showAsAction="ifRoom"から<item>

  3. 最後に、Project-> Clean ...でプロジェクトをクリーンアップします。

最後のステップは私のためにそれを解決したものです。単にプロジェクトを掃除する(ときどき汚くなることがある)

最終的なコードは次のようになります。

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="schemas.Android.com/tools"
tools:context="com.example.sample.YourActivity"
xmlns:yourapp="http://schemas.Android.com/apk/res-auto" >

<item
    Android:id="@+id/action_share"
    Android:orderInCategory="100"
    Android:title="Share"
    Android:icon="@drawable/ic_share_white"
    yourapp:showAsAction="ifRoom" />

</menu>
18
Advait S

これは私のために働きます私はappcompatlibraryを使用しました:

compat:showAsAction="always"

の代わりに:

app:showAsAction="always"

また、compat:showAsAction = "always"を使用するには、menu.xml内に次の行を含めます。

<menu   
   ......
  <!-- include the below line -->
    xmlns:compat="http://schemas.Android.com/apk/res-auto" >
14
Mohammed Ali

同じ問題に直面した。これらの2つのオプションは私にとってうまくいきました:

1.含む-xmlns:compat = "http://schemas.Android.com/apk/res-auto">を使用し、次を使用: "compat:showAsAction =" ifRoom "/>"

2. compatを含めず、単純にapp:showAsAction = "ifRoom" />を使用する

PS:Android Studioを使用しています。

5
Santosh Pillai

Appcompatライブラリを使用しない場合は、Android:showAsActionを使用する必要があります

問題:メニュー項目が正しい名前空間IDを使用していることを確認します:AppCompatResource

Appcompatライブラリを使用する場合、メニューリソースは、Android:名前空間ではなく、app:名前空間のshowAsActionを参照する必要があります。

同様に、appcompatライブラリーを使用しない場合は、Android:showAsAction属性を使用する必要があります。

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
   xmlns:tools="http://schemas.Android.com/tools"
   xmlns:compat="http://schemas.Android.com/apk/res-auto" >

    <item
        Android:id="@+id/action_refresh"
        Android:orderInCategory="100"
        Android:title="@string/action_refresh"
        Android:icon="@drawable/toc"
        tools:ignore="AppCompatResource"
        compat:showAsAction="always"/> 
</menu>
0
z.houbin

警告を表示しないようにするには、item要素に次の行を追加するだけです。 compatappの名前空間を"http://schemas.Android.com/apk/res-auto"は実際には特別なことは何もしません。

tools:ignore="AppCompatResource"

完全なコード:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
      xmlns:compat="http://schemas.Android.com/apk/res-auto" >

    <item
        Android:id="@+id/action_refresh"
        Android:orderInCategory="100"
        Android:title="@string/action_refresh"
        Android:icon="@drawable/toc"
        tools:ignore="AppCompatResource"
        compat:showAsAction="always"/>
</menu>

注:compatタグはappまたは必要に応じて何でもかまいません。

0
Smalls