

現在の質問は[Android:
入力フィールドとボタンの幅をぴったり合わせる](https://ja.stackoverflow.com/questions/29662/android-%E5%85%A5%E5%8A%9B%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%A8%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E5%B9%85%E3%82%92%E3%81%B4%E3%81%A3%E3%81%9F%E3%82%8A%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B?noredirect=1#comment28659_29662)という課題の続きです。その質問に入力フィールドとボタンの幅を合わせるには、次の解決策が提供されました：

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <inset xmlns:android="http://schemas.android.com/apk/res/android"
        android:insetBottom="@android:dimen/button_inset_vertical_material"
        android:insetLeft="@android:dimen/button_inset_horizontal_material"
        android:insetRight="@android:dimen/button_inset_horizontal_material"
        android:insetTop="@android:dimen/button_inset_vertical_material">
    
        <shape>
            <solid android:color="#ffcccc" />
            <corners android:radius="2dip" />
            <padding
                android:bottom="0dip"
                android:left="0dip"
                android:right="0dip"
                android:top="0dip" />
        </shape>
    </inset>
    
[/code]

残念ながら、出たエラーメッセージによると、`<inset xmlns>`を再定義する事が許可されていないようです：

[![画像の説明をここに入力](https://i.stack.imgur.com/7NgvB.png)](https://i.stack.imgur.com/7NgvB.png)

ですけど、前の質問に親切に答えたlitmonさんのパソコンにはこのエラーがなかったようです。  
もしかして、原因はアクセス変更子に関係ないか、更新したAndroid SDKにはアクセスできなくなったかもしれません。


CC BY-SA 3.0
2016-10-19T12:37:28.650
29705
2017-02-09T09:13:48.030
2017-04-13T12:52:39.113
-1
16876
question
android xml
Android&XML: inset xmlns変更にアクセス拒否


システムリソース（`@android:` から始まるもの）や、ライブラリのリソースには、参照することのできない `private` リソースが存在します。

ここで出ているエラーメッセージは、Inset Drawable を定義していることが問題なのではなく、

  * `@android:dimen/button_inset_vertical_material`
  * `@android:dimen/button_inset_horizontal_material`

この二つのシステムリソースが `private` リソースのためです。

本来、こうした値は予告なく変更されたり削除される可能性があるため、推奨はしないのですが、

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <inset xmlns:android="http://schemas.android.com/apk/res/android"
        android:insetBottom="@*android:dimen/button_inset_vertical_material"
        android:insetLeft="@*android:dimen/button_inset_horizontal_material"
        android:insetRight="@*android:dimen/button_inset_horizontal_material"
        android:insetTop="@*android:dimen/button_inset_vertical_material">
    
        <shape>
            <solid android:color="#ffcccc" />
            <corners android:radius="2dip" />
            <padding
            android:bottom="0dip"
            android:left="0dip"
            android:right="0dip"
            android:top="0dip" />
        </shape>
    </inset>
    
[/code]

リソース参照の先頭を `@*` に変更することで、参照することは可能です。

最善の方法は、システムリソースから必要な部分のみ、自分のプロジェクトにコピーして使うことです。


CC BY-SA 3.0
2016-10-19T14:22:44.633
29712
2016-10-19T14:22:44.633
5337
29705
answer