描画領域を設定絵からAndroidの開発者のコードは、問題が表示されません

問題の説明

  私たちは、Drawableのは、あなたが見るために設定した場合、画像は、次のコードのように問題のコードが表示されないことがわかります取得します:

        。描画可能な描画可能=のgetResources()getDrawable(R.drawable.bg_btn_green、NULL ); 
        btn1.setCompoundDrawables(ヌル、描画可能な、NULLNULL);

問題の原因

  実際に取得された上記のように描画可能でコードsetBounds()サイズを備えていません

この問題を解決します

  次のように、ライン上のsetBounds()に描画可能に設けられました:

drawable.setBounds(0、0、100、100)。

  それはあなた自身を設定した固定値であるため、しかし、これは、適応サイズの問題を解決していません。ここではサイズに合わせて2つのアイデアがあります

  最初の描画可能なXMLファイルにはベクトルである(ベクターは、通常、幅と高さを含んでいる)、またはXMLのアンドロイドを備えた背景などの内部寸法を含む:.幅=「100dp」とした場合アンドロイド:高さ=「100dp "

<?xml version = "1.0"エンコード= "UTF-8"?> 
<形状のxmlns:アンドロイド= "http://schemas.android.com/apk/res/android" 
    アンドロイド:形状 = "矩形"> 
    <固体アンドロイド:色= "@色/ colorGreen4" /> 
    <コーナーアンドロイド:半径= "5DP" /> 
    <サイズアンドロイド:幅= "100dp" 
        アンドロイド:高さ = "100dp" /> 
</形状>

  その後、次の方法の適応サイズを選択することができます。

        。描画可能な描画可能=のgetResources()getDrawable(R.drawable.bg_btn_green、NULL );
//         drawable.setBounds(0、0、drawable.getIntrinsicWidth()、drawable.getIntrinsicHeight())。
        drawable.setBounds(0、0 、drawable.getMinimumWidth()、drawable.getMinimumHeight())。
        btn1.setCompoundDrawables(ヌル、描画可能な、NULLNULL);

drawable.getIntrinsicWidth()、drawable.getIntrinsicHeight()は、内部の幅と高さを取得します

drawable.getMinimumWidth()、drawable.getMinimumHeight()は、推奨される最小幅と高さを取得します

  第二に。何の内部寸法を描画可能なん

  内部サイズなしのDrawableのは、一般的に、キー背景やチャットボックスの背景、または再分割ライン我々は唯一のコードの次の行に適応サイズで表示を必要とするこの時間です。

btn1.post(新しい新しい Runnableを(){ // ビューがのonCreateのライフサイクルで作成された大きさを測定していないので、我々は必要なときに並んDrawableの表示に加工されるので、
            @Override
             公共 のボイドRUNを(){ 
                描画可能な描画可能 getResources =()getDrawable(R.drawable.bg_btn_green、。NULL );
                 int型の幅= 0 ;
                 int型の高さ= 0 ;
                 IF(drawable.getIntrinsicWidth()== -1){ // それが示している場合は-1何の幅の値の 
                    幅がない= btn1.getWidth(); //は、ビューの幅を取得 
                }  { = drawable.getIntrinsicWidth()。
                } 
                であれば(drawable.getIntrinsicHeight()== -1 ){ 
                    高さ = btn1.getHeight()。
                } { 
                    高さ = drawable.getIntrinsicHeight()。
                } 
                drawable.setBounds( 0、0 、幅、高さ)。
                btn1.setBackground(描画可能)。
            } 
        })。

もしdrawable.getMinimumWidth()、drawable.getMinimumHeight()値がゼロになると判断される。コメント2に、この方法は、推奨される最小を示していない場合は0を返すので

 

おすすめ

転載: www.cnblogs.com/guanxinjing/p/11249427.html