Я хочу сделать приложение так же, как открытие экрана андроида. Я динамически добавляю изображения в строки tableLayout. Я только определил tableLayout в xml файле, а оставшийся код находится в java. Я добавил изображения успешно, но я не получаю никакой помощи в настройке текста этого изображения (я хочу отображать текст под изображением) и изображения, чтобы быть конкретным дополнением. Как это сделать? Спасибо заранее.
Добавить текст в файл в андроид программно
Ответ 1
Вместо этого вы можете поместить TextView в оверлей в ImageView с помощью RelativeLayout:)
Ответ 2
Используйте следующую функцию для записи текста в изображениях:
private BitmapDrawable writeTextOnDrawable(int drawableId, String text) {
    Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId)
            .copy(Bitmap.Config.ARGB_8888, true);
    Typeface tf = Typeface.create("Helvetica", Typeface.BOLD);
    Paint paint = new Paint();
    paint.setStyle(Style.FILL);
    paint.setColor(Color.WHITE);
    paint.setTypeface(tf);
    paint.setTextAlign(Align.CENTER);
    paint.setTextSize(convertToPixels(mContext, 11));
    Rect textRect = new Rect();
    paint.getTextBounds(text, 0, text.length(), textRect);
    Canvas canvas = new Canvas(bm);
    //If the text is bigger than the canvas , reduce the font size
    if(textRect.width() >= (canvas.getWidth() - 4))     //the padding on either sides is considered as 4, so as to appropriately fit in the text
        paint.setTextSize(convertToPixels(mContext, 7));        //Scaling needs to be used for different dpi's
    //Calculate the positions
    int xPos = (canvas.getWidth() / 2) - 2;     //-2 is for regulating the x position offset
    //"- ((paint.descent() + paint.ascent()) / 2)" is the distance from the baseline to the center.
    int yPos = (int) ((canvas.getHeight() / 2) - ((paint.descent() + paint.ascent()) / 2)) ;  
    canvas.drawText(text, xPos, yPos, paint);
    return new BitmapDrawable(getResources(), bm);
}
public static int convertToPixels(Context context, int nDP)
{
    final float conversionScale = context.getResources().getDisplayMetrics().density;
    return (int) ((nDP * conversionScale) + 0.5f) ;
}
		Ответ 3
Я успешно реализовал такую проблему добавления текста на изображение. Просто посмотрите на следующий код. Сначала выберите один вид, поскольку Относительная компоновка в этом макете примет ImageView после этого EditText и после этой кнопки. Дайте каждому идентификатору. Напишите функцию loadBitmapFromView ниже.
public Bitmap loadBitmapFromView(View v) {
        Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Config.ARGB_8888);
        Canvas c = new Canvas(b);
        v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
        v.draw(c);
        return b;
    }
и нажатием кнопки.
               Bitmap bitmap = loadBitmapFromView(relativeLayout);
                File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),         "folderName");
                if (!dir.exists())
                    dir.mkdirs();
                File file = new File(dir, "capture.jpg");
                try {
                    FileOutputStream fos = new FileOutputStream(file);
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
                    imageView.setImageBitmap(bitmap);    
                } catch (Exception e) {
                    Log.e("ExpressionEditImageActivity", "Error, " + e);
                }
Enjoy...
Для получения дополнительной информации см. снимок экрана ниже:
