Intereting Posts
Разработка Android в планшетном ПК Micromax Ошибка сборки Gradle после BSOD (java.lang.NullPointerException (нет сообщения об ошибке) SYSTEM_UI_FLAG_LOW_PROFILE не работает на HTC One M8 Как отображать текущее время, которое динамически изменяется каждую секунду в android Запланировать повторную работу с помощью диспетчера работ Может ли Android-устройство действовать как iBeacon? Результаты проекта Firebase в ошибке «Ошибка авторизации / отказа от сети» при входе в систему Lollipop: кнопка «Отключено» -> какой стиль? Android: не удалось создать каталог для файла SharedPreferences Является ли Robotium надежным для тестирования того, как начинаются быстрые действия и фрагменты? Получать MMS-сообщения в Android KitKat Проблема с запуском Android ApiDemos в Eclipse Android: автоматически показывать мягкую клавиатуру, когда фокус находится на EditText INSTALL_FAILED_OLDER_SDK, когда версии SDK выглядят так, как должно работать? Проверьте, отображается ли мягкая клавиатура с помощью эспрессо

Android Текст поверх изображения

У меня есть изображение с изображением, над этим изображением я хочу поместить текст. Как я могу это достичь?

Solutions Collecting From Web of "Android Текст поверх изображения"

Вот как я это сделал, и он работал точно так же, как вы просили:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativelayout" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/myImageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/myImageSouce" /> <TextView android:id="@+id/myImageViewText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@id/myImageView" android:layout_alignTop="@id/myImageView" android:layout_alignRight="@id/myImageView" android:layout_alignBottom="@id/myImageView" android:layout_margin="1dp" android:gravity="center" android:text="Hello" android:textColor="#000000" /> </RelativeLayout> 

PS: Работает только внутри RelativeLayout

Вы можете захотеть взять, если с другой стороны: кажется, проще иметь TextView с возможностью рисования на фоне:

  <TextView android:id="@+id/text" android:background="@drawable/rounded_rectangle" android:layout_width="wrap_content" android:layout_height="wrap_content" </TextView> 

Для этого вы хотите использовать FrameLayout или макет слияния. Android-руководство для разработчиков имеет отличный пример этого: Android Layout Tricks # 3: Оптимизация путем слияния .

Есть много способов. Вы используете RelativeLayout или AbsoluteLayout.

С относительным вы можете, например, сопоставить изображение с родителем на левой стороне, а также выравнивать текст с родительским слева … тогда вы можете использовать поля и отступы и гравитацию в текстовом представлении, чтобы выровнять его, где вы Хотите по изображению.

Вы могли бы

  • Создать новый класс, унаследованный от класса ImageView и
  • Переопределить метод onDraw . super.onDraw() в этом методе и
  • Затем нарисуйте текст, который хотите отобразить.

Если вы это сделаете, вы можете использовать это как один компонент компоновки, который упрощает компоновку вместе с другими компонентами.

Вы можете использовать TextView и изменить его фон на изображение, которое вы хотите использовать.

Для этого вы можете использовать только один TextView с android:drawableLeft/Right/Top/Bottom чтобы поместить изображение в TextView. Кроме того, вы можете использовать некоторое дополнение между TextView и drawable с помощью android:drawablePadding=""

Используйте его так:

 <TextView android:id="@+id/textAndImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableBottom="@drawable/yourDrawable" android:drawablePadding="10dp" android:text="Look at the drawable below"/> 

При этом вам не нужен дополнительный ImageView. Также возможно использовать две чертежи на нескольких сторонах TextView.

Единственная проблема, с которой вам придется столкнуться, заключается в том, что выталкиваемый нельзя масштабировать способом ImageView.

Попробуйте приведенный ниже код, это поможет вам

  <RelativeLayout android:layout_width="match_parent" android:layout_height="150dp"> <ImageView android:layout_width="wrap_content" android:layout_height="match_parent" android:src="@drawable/gallery1"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="#7ad7d7d7" android:gravity="center" android:text="Juneja Art Gallery" android:textColor="#000000" android:textSize="15sp"/> </RelativeLayout> 

Ниже приведен код, который поможет вам

 public class TextProperty { private int heigt; //读入文本的行数private String []context = new String[1024]; //存储读入的文本/* *@parameter wordNum * */ public TextProperty(int wordNum ,InputStreamReader in) throws Exception { int i=0; BufferedReader br = new BufferedReader(in); String s; while((s=br.readLine())!=null){ if(s.length()>wordNum){ int k=0; while(k+wordNum<=s.length()){ context[i++] = s.substring(k, k+wordNum); k=k+wordNum; } context[i++] = s.substring(k,s.length()); } else{ context[i++]=s; } } this.heigt = i; in.close(); br.close(); } public int getHeigt() { return heigt; } public String[] getContext() { return context; } в public class TextProperty { private int heigt; //读入文本的行数private String []context = new String[1024]; //存储读入的文本/* *@parameter wordNum * */ public TextProperty(int wordNum ,InputStreamReader in) throws Exception { int i=0; BufferedReader br = new BufferedReader(in); String s; while((s=br.readLine())!=null){ if(s.length()>wordNum){ int k=0; while(k+wordNum<=s.length()){ context[i++] = s.substring(k, k+wordNum); k=k+wordNum; } context[i++] = s.substring(k,s.length()); } else{ context[i++]=s; } } this.heigt = i; in.close(); br.close(); } public int getHeigt() { return heigt; } public String[] getContext() { return context; } в public class TextProperty { private int heigt; //读入文本的行数private String []context = new String[1024]; //存储读入的文本/* *@parameter wordNum * */ public TextProperty(int wordNum ,InputStreamReader in) throws Exception { int i=0; BufferedReader br = new BufferedReader(in); String s; while((s=br.readLine())!=null){ if(s.length()>wordNum){ int k=0; while(k+wordNum<=s.length()){ context[i++] = s.substring(k, k+wordNum); k=k+wordNum; } context[i++] = s.substring(k,s.length()); } else{ context[i++]=s; } } this.heigt = i; in.close(); br.close(); } public int getHeigt() { return heigt; } public String[] getContext() { return context; } 

}

 public class MainActivity extends AppCompatActivity { private Button btn; private ImageView iv; private final int WORDNUM = 35; //转化成图片时 每行显示的字数private final int WIDTH = 450; //设置图片的宽度@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.imageView); btn = (Button) findViewById(R.id.button); btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int x=5,y=10; try { TextProperty tp = new TextProperty(WORDNUM, new InputStreamReader(getResources().getAssets().open("1.txt"))); Bitmap bitmap = Bitmap.createBitmap(WIDTH, 20*tp.getHeigt(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); Paint paint = new Paint(); paint.setColor(Color.WHITE); paint.setTextAlign(Paint.Align.LEFT); paint.setTextSize(20f); String [] ss = tp.getContext(); for(int i=0;i<tp.getHeigt();i++){ canvas.drawText(ss[i], x, y, paint); y=y+20; } canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); String path = Environment.getExternalStorageDirectory() + "/image.png"; System.out.println(path); FileOutputStream os = new FileOutputStream(new File(path)); bitmap.compress(Bitmap.CompressFormat.PNG, 100, os); //Display the image on ImageView. iv.setImageBitmap(bitmap); iv.setBackgroundColor(Color.BLUE); os.flush(); os.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } 

}