什么是paddingStart和paddingEnd?

Mat*_*ieu 15 android android-layout

由于很少次Eclipse中的自动完成框提出android:paddingStart android:paddingStop,当我编写xml布局文件时.

我真的不明白这些属性应该做什么.

eclipse/javadoc文档并没有多大帮助: Sets the padding, in pixels, of the start edge; see padding.在线文档没有对这些属性进行任何引用:http://developer.android.com/reference/android/view/View.html

你能解释一下吗?

Mat*_*ieu 29

在阅读Android源代码(View.java)之后,似乎paddingStart和paddingEnd有助于处理用户定义的字母方向(从右到左的左右).

因此,paddingStart在LTR(从左到右)语言中被解释为paddingLeft,在RTL(从右到左)语言中被解释为paddingRight.

来自View.java的源代码(android-4.0.1):

    switch (getResolvedLayoutDirection()) {
        case LAYOUT_DIRECTION_RTL:
            // Start user padding override Right user padding. Otherwise, if Right user
            // padding is not defined, use the default Right padding. If Right user padding
            // is defined, just use it.
            if (mUserPaddingStart >= 0) {
                mUserPaddingRight = mUserPaddingStart;
            } else if (mUserPaddingRight < 0) {
                mUserPaddingRight = mPaddingRight;
            }
            if (mUserPaddingEnd >= 0) {
                mUserPaddingLeft = mUserPaddingEnd;
            } else if (mUserPaddingLeft < 0) {
                mUserPaddingLeft = mPaddingLeft;
            }
            break;
        case LAYOUT_DIRECTION_LTR:
        default:
            // Start user padding override Left user padding. Otherwise, if Left user
            // padding is not defined, use the default left padding. If Left user padding
            // is defined, just use it.
            if (mUserPaddingStart >= 0) {
                mUserPaddingLeft = mUserPaddingStart;
            } else if (mUserPaddingLeft < 0) {
                mUserPaddingLeft = mPaddingLeft;
            }
            if (mUserPaddingEnd >= 0) {
                mUserPaddingRight = mUserPaddingEnd;
            } else if (mUserPaddingRight < 0) {
                mUserPaddingRight = mPaddingRight;
            }
    }
Run Code Online (Sandbox Code Playgroud)

  • 另请注意,它们似乎并不公开.至少Eclipse不会为我编译它们. (3认同)