2011-10-29 12 views
2

私はこの一見単純な問題に対する答えを何時間も探しました。レイヤーリストのdrawableからの画像ボタン?

基本的に、レイヤーリストでイメージボタンを特定のドロアブルにする方法はありますか?

Eclipseでは、このコードにエラーが発生していないのに、実行時に強制終了します。私は何が欠けていますか?また

-

私は、彼らはレイヤーリストにいる場合でも、リソースを参照するためにfindViewByIdを使用していますか?

XMLファイルのandroid:idは、itemタグまたはbitmapタグに属していますか?

EDIT:このコードは、問題を実証するためにまとめたものです。私は最後のレイヤードドローイングをアクティブなボタンにしようとしています。たとえば、UIの場合は束またはグラフィックを重ねて配置し、最後の2つのレイヤーはアクティブにしたいボタンになります。それは可能ですか?それとも、私がやろうとしていることをするためのより良い方法がありますか?

ありがとうございました。


layers.xml:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <bitmap android:src="@drawable/android_red" 
     android:gravity="center" /> 
    </item> 
    <item android:top="10dp" android:left="10dp"> 
     <bitmap android:src="@drawable/android_green" 
     android:gravity="center" /> 
    </item> 
    <item android:id="@+id/blue_button" 
     android:top="20dp" android:left="20dp"> 
     <bitmap android:src="@drawable/android_blue" 
     android:gravity="center" /> 
    </item> 
</layer-list> 

main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:src="@drawable/layers" /> 

</LinearLayout> 

アクティビティー:

public class LayoutTestActivity extends Activity implements OnClickListener { 

     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FILL_PARENT,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.main); 

     ImageButton imgStartButton = (ImageButton) findViewById(R.id.blue_button); 
     imgStartButton.setOnClickListener(this); 


     } 

    public void onClick(View v) { 


    } 
} 

答えて

1

idをレイヤーリストドロウアブルに入れず、Imageviewに入れます。あなたは今、私は理解して

ImageView imgStartButton = (ImageView) findViewById(R.id.blue_button); 
imgStartButton.setOnClickListener(this); 
imgStartButton.setBackgroundResource(R.drawable.layers); 
+0

を使用する描画可能にアクセスするには

<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/layers" android:id="@+id/blue_button"/> 

。どうもありがとうございました。 – ShadowGod

+0

これは進歩ですが、私が望むように正確に動作しません。 onClickListenerをView全体に設定すると、ビューのどこかをクリックしてクリックを登録できます。私はそれをレイヤーのドロアブルの1つに限定したいのですが、意味がありますか?私がお互いの上にいくつかのグラフィックスを重ねて、上の最後のレイヤーがボタンだったとしたら、その最後のレイヤーイメージをアクティブなボタンにしたいとします。 – ShadowGod

+0

cliclリスナーは、描画可能ではないビューに与えられます。あなたの要件によると、あなたはお互いの上にビューを積み重ねるframelayoutを使用する必要があります。各レイヤーを各ビューとして追加します。適切なビューにclocklistenerを追加します。 – blessenm