1

私はAndroid開発の初心者なので、ボタンを押すとテキストビューを非表示にする単純なアプリケーションを開発しているので、ボタンのOnClickイベントのメソッドのJavaコードで、テキストビューを非表示に設定しました。

textView.setVisibility(1);

1 はAndroid リファレンスに記載されている「見えない」の値ですが、機能しないため、使用した後

textView.setVisibility(View.INVISIBLE);

それは機能するので、「1」の値はいつ使用されますか? Androidリファレンスが言うように、1ではなくView.INVISIBLE = 4であるのはなぜですか?

Android リファレンスでは、属性 android:visibility の値 Invisible が 1 として定義されていることがわかります

4

2 に答える 2

3

どちらも違いです。Androidリファレンスによると

textView.setVisibility(1);

と同じです

textView.setVisibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);

ビューを非表示にする場合は、次を使用します。

textView.setVisibility(View.INVISIBLE);

または

textView.setVisibility(4);
于 2013-02-18T02:46:52.240 に答える
2

これは良い質問です。Android のソース コード (frameworks/base/core/java/android/view/View.java) を確認しました。

case com.android.internal.R.styleable.View_visibility:
    final int visibility = a.getInt(attr, 0);
    if (visibility != 0) {
          viewFlagValues |= VISIBILITY_FLAGS[visibility]; //here is the key to your question
          viewFlagMasks |= VISIBILITY_MASK;
    }
    break;

VISIBILITY_FLAGS の内容は次のとおりです。

private static final int[] VISIBILITY_FLAGS = {VISIBLE, INVISIBLE, GONE};

配列要素の値は、実際にはAndroid リファレンスに示されている値です。

/**
     * This view is visible.
     * Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
     * android:visibility}.
     */
    public static final int VISIBLE = 0x00000000;

    /**
     * This view is invisible, but it still takes up space for layout purposes.
     * Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
     * android:visibility}.
     */
    public static final int INVISIBLE = 0x00000004;

    /**
     * This view is invisible, and it doesn't take any space for layout
     * purposes. Use with {@link #setVisibility} and <a href="#attr_android:visibility">{@code
     * android:visibility}.
     */
    public static final int GONE = 0x00000008;

そのため、マニフェスト ファイルで android:invisible を使用しても、Android フレームワークは最終的に値 4 で setVisibility(...) を呼び出します。

于 2013-02-18T03:12:30.620 に答える