2015-07-27 3 views
12

Я хочу наложить textview на imageview на андроид, который я сделал программно. Я также хочу, чтобы изображение было в состоянии увеличивать и уменьшать масштаб, что также я могу сделать. Но я застрял в проблеме размещения текста на изображении таким образом, что, пока я увеличиваю изображение, текст не должен увеличиваться, и он должен оставаться в том же положении на изображении, что и на экране.Android ImageView Zoom с наложением текста

+0

Вы пытались добавить TextView в виде View в ImageView и переопределить прослушиватели жестов? –

+1

Проверьте это: http://stackoverflow.com/questions/14004424/android-zoomable-scrollable-imageview-with-overlays?rq=1 – zed

+0

@TobiasK. что вы понимаете, добавив «добавить TextView в качестве представления в ImageView»? Может ли ImageView иметь дочерние элементы? – techtinkerer

ответ

6

ОК, я создал XML-макет, который соответствует вашим потребностям. Все, что вам нужно сделать, это увеличить или уменьшить изображение.

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 

    xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="287dp" 
     android:layout_height="287dp" 

     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:text="Hello Constant Text Overlay" 

     android:layout_gravity="center_horizontal|center_vertical"/> 
     <!-- Don't want it centered? Then change the layout gravity to fit your needs --> 

</FrameLayout> 

При этом, вы можете легко изменять ширину и высоту ImageView и TextView будет оставаться в центре, не получая больше или меньше.

Я заметил, что вы взяли программное решение, и вы можете легко посмотреть, как это делается с помощью XML и преобразовать его в код.

Важно то, что у вас есть контейнер вокруг вашего ImageView, который обертывает содержимое. Внутри этого есть ImageView с указанной шириной/высотой и TextView, который центрируется по горизонтали и вертикали в контейнере.

Теперь вы можете делать все, что хотите сделать с изображением, текст останется нетронутым; просто он останется в центре

+0

Это способ пойти, если ему нужен текст в центре, но если он хочет текст в какой-то другой позиции, то комментарий Зеда - отличный подход. –

+0

Я добавил комментарий, чтобы объяснить, как изменить, если из центра. Существует множество позиций, которые мое решение работает правильно. Это также одно из самых простых решений: –

+0

Кроме того, если пользователь не хочет его в одном из мест, определяемых 'layout_gravity', тогда они могут добавлять дополнительные атрибуты, такие как поля и такие –