如何自定义ImageButton的图像?

时间:2014-01-22 10:38:17

标签: android customization imagebutton android-drawable

我允许应用用户从可绘制文件夹中更改ImageButton的图片?

有可能吗?

我希望在onLongClickListener之后关联此操作, 我在Drawable文件夹中放了大约3张或4张图片(png),用户可以为ImageButton选择一张。

1 个答案:

答案 0 :(得分:0)

是的,你可以。在onLongClickListener上单击,您可以弹出该选项,然后输入一个switch语句,并为每个案例添加以下内容:

aButton.setImageResource(R.drawable.image2);

以下是更详细的答案:

将以下内容放在布局的底部(就在最后一个关闭布局标记之前)

<FrameLayout
    android:id="@+id/imagebuttonselectorlayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone"
    android:background="@android:color/black" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/imgButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/image1" />

        <ImageButton
            android:id="@+id/imgButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/image2" />
    </LinearLayout>
</FrameLayout>

然后,在java类文件中,添加以下行:

FrameLayout mFrameLayout;
ImageButton mImageButton1;
ImageButton mImageButton2;

mFrameLayout = (FrameLayout)findViewById(R.id.imagebuttonselectorlayout);
mImageButton1 = (ImageButton)findViewById(R.id.imgButton1);
mImageButton2 = (ImageButton)findViewById(R.id.imgButton2);

用于主图像按钮的onLongClick

mImageButton1.setOnLongClickListener(new OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {
        mFrameLayout.setVisibility(View.VISIBLE);
        return true;
    }
});

在同一文件中添加以下行以完成功能:

mImageButton1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        mainImageButton.setImageResource(R.drawable.image1);
        mFrameLayout.setVisibility(View.GONE);
    }
});

mImageButton2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        mainImageButton.setImageResource(R.drawable.image2);
        mFrameLayout.setVisibility(View.GONE);
    }
});