FQA android----界面佈局的顏色和Xml定義的不一致

在XML佈局的如下:

<pre name="code" class="html"><LinearLayout
 android:id="@+id/outstock_lists"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#00000000"
 android:gravity="center"
 android:orientation="vertical" >
 </LinearLayout>


給Linearlayout設置的背景色,即透明色

但是在deug模式中,在Linearlayout對象的mbackground屬性值爲ColorDrawable,那麼如何在ColorDrawable中查看顏色值呢,通過分析源代碼

public ColorDrawable(int color) {
        this(null);
        setColor(color);
    }

public void setColor(int color) {
        if (mState.mBaseColor != color || mState.mUseColor != color) {
            invalidateSelf();
            mState.mBaseColor = mState.mUseColor = color;
        }
    }
最終的顏色值被賦值到mState.mBaseColor屬性上,在這個對象上面,看到的值是一個int類型(-8947849),自己還是不知道這個值代表的是什麼顏色,最後查遍網絡,發現了一個方法,可以把android 的顏色從int值轉換成String類型,方式如下:

int intColor=-8947849;
String strColor = String.format("#%06X", 0xFFFFFF & intColor);
最終得到的顏色值是#777777

不是自己在Xml佈局中設置的透明色

不知道是什麼操作導致android沒有加載在XML中定義的顏色,導致最後在加載時顏色值不是我想要的,不得已只能在加載佈局之後,給Linearlayout的background再次賦值。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章