android - 如何用ImageView制作边框?

标签 android imageview border

我有一个选择照片并在 ImageView 中查看照片的应用程序。 我希望该应用程序以与 Google+ 相同的方式显示从图库中选择的照片。

我尝试使用 CENTER_CROPCENTER_INSIDE 但照片超出了边界。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == 1) {
            Uri si = data.getData();
            String[] fpc = {MediaStore.Images.Thumbnails.DATA};

            Cursor c = getContentResolver().query(si, fpc, null, null, null);
            c.moveToFirst();

            int ci = c.getColumnIndex(fpc[0]);
            String fp = c.getString(ci);
            c.close();

            ImageView iv = new ImageView(this);
            iv.setLayoutParams(new LinearLayout.LayoutParams(100, 100));

            iv.setImageBitmap(BitmapFactory.decodeFile(fp));
            iv.setScaleType(ImageView.ScaleType.CENTER_CROP);               
            iv.setBackgroundResource(R.drawable.btn_shp_selphoto);

            LinearLayout lay_gal = (LinearLayout) findViewById(R.id.summ_layout_gal);
            lay_gal.addView(iv);
        }
    }
}

最佳答案

iv.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                v.setBackgroundResource(R.drawable.border04);
            }
        });

border04.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" android:layout_width="wrap_content">
            <stroke android:width="0.5dp" android:color="#FF000000" />
            <solid android:color="#FFFFFFFF" />
            <padding android:left="2dp" android:top="2dp" android:right="2dp"
                android:bottom="2dp" />
            <corners android:radius="0dp" />
        </shape>
    </item>


</layer-list>

另一个边框(border03.xml):

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" android:layout_width="wrap_content">
            <stroke android:width="1dp" android:color="#FF000000" />
            <solid android:color="#00000000" />
            <padding android:left="1dp" android:top="1dp" android:right="1dp"
                android:bottom="1dp" />
            <corners android:radius="1dp" />

        </shape>
    </item>

    <item android:top="1dp" android:bottom="1dp">
        <shape android:shape="rectangle">
            <gradient android:startColor="#252525" android:endColor="#252525"
                android:angle="270" android:centerColor="#545454" />
            <!-- border width and color -->
            <stroke android:width="1dp" android:color="#FFDDDDDD" />
        </shape>
    </item>

</layer-list>

关于android - 如何用ImageView制作边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938794/

相关文章:

android - 在系统范围内抑制来自所有应用程序的 toast 消息

ios - 运行时属性边框颜色

android - Fresco - 来自 ControllerListener 的 onIntermediateImageSet 未被调用

html - 你能制作 "an invisible border"吗?

html - 从 Bootstrap Accordion 中删除边框

java - 数字格式异常 : Invalid double: "٢"

安卓 setListAdapter/SimpleCursorAdapter

android - 无法在 Eclipse 中启动 Android sdk 管理器

android - 如何使用 picasso 调整 ImageView 占位符的大小

java - 无法将 GridView 内的 ImageView 设置为从 Drawable 转换的 Bitmap