如何将ImageDrawable设置为View

时间:2016-08-28 19:25:12

标签: imageview children insert-image

Noob to Java所以我的知识有限。我有2个RelativeLayouts,可以保存13张牌的图像。一个用于所有卡,一个稍微偏移,显示哪些卡可以播放。 Xml非常简单

           <!--Player viewable cards-->
    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="200dp"
        android:layout_height="680dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="100dp"
        android:layout_marginLeft="15dp"
        android:id="@+id/rlUserViewCards">

        <ImageView
            android:layout_width="100dp"
            android:layout_height="85dp"
            android:src="@drawable/c001"
            android:rotation="90"
            android:tag="1"
            android:id="@+id/card1"
            android:clickable="false">
        </ImageView>

        <ImageView
            android:layout_width="100dp"
            android:layout_height="85dp"
            android:src="@drawable/c002"
            android:rotation="90"
            android:id="@+id/card2"
            android:layout_below="@+id/card1"
            android:layout_marginTop="-65dp"
            android:clickable="false">
        </ImageView>

等13张图片。然后我可以创建一个相对布局的视图,循环遍历孩子,使图像可见/可见,可点击或不可点击。这看起来是一个好方法吗?

如果是这样,我在第一次设置relativelayout时的问题是我可以在上面设置以及使用卡值设置Tag,我无法通过findViewById计算如何获取ImageView的整数。

            userViewCards = (RelativeLayout) findViewById(R.id.rlUserViewCards);
    userPickCards = (RelativeLayout) findViewById(R.id.rlUserPlayCards);
    View v = userViewCards.getChildAt(0);
    Resources res = getResources();
    int resId = res.getIdentifier("s204", "drawable", getPackageName());  
    Drawable drawable = ResourcesCompat.getDrawable(getResources(), res.getIdentifier("s204", "drawable", getPackageName()), null);
    ImageView insertImage = (ImageView) findViewById(??);  
    insertImage.setImageDrawable(drawable);

有人能指出我正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将标签值设置为imageView并在活动中接收,如下所示

<ImageView
        android:layout_width="100dp"
        android:layout_height="85dp"
        android:src="@drawable/c001"
        android:rotation="90"
        android:tag="1"
        android:id="@+id/card1"
        android:clickable="false">


@OnClick({R.id.card1, R.id.card2, R.id.card3, R.id.card4})
public void selectedCard(View view) {

    String selectedCard = view.getTag().toString();
    Log.d(TAG, "Mode Selected : " + mode);

    switch (Integer.parseInt(mode)) {
        case Constant.Card1:
            // Do something here
            break;
        case Constant.Card2:
            // Do something here
            break;
        case Constant.Card3:
            // Do something here
            break;
        case Constant.Card4:
            // Do something here
    }
}

注意:我在这里使用了butterknife,因此@OnClick()