2013-06-17 4 views
7

Я написал код, в котором я показываю изображения в GridView, но теперь хочу показать текст в нижней части каждого изображения.Как показать текст на картинке

И я хочу, чтобы показать мою сетку, как это:

enter image description here

но получить, как это [хочу показать текст для изображения]:

enter image description here

основной. xml:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
    <GridView 
     android:id="@+id/gridview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:verticalSpacing="0dp" 
     android:horizontalSpacing="0dp" 
     android:stretchMode="columnWidth" 
     android:numColumns="2" 
     /> 
</FrameLayout> 
+0

, что есть вопросы здесь? –

+2

создайте пользовательский макет для своего элемента GridView и поместите туда изображение + TextView и заполните его в своем адаптере. – hardartcore

+0

согласен с @ Android-разработчиком – Chetan

ответ

7

Вам необходимо определить настраиваемый макет элемента сетки, который содержит текстовое представление для назначения текста.

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <ImageView 
     android:id="@+id/thumbnail" 
     android:padding="8dp" 
     android:scaleType="cropCenter" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
    <TextView 
     android:id="@+id/title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:layout_gravity="bottom" 
     android:textColor="@android:color/white" 
     android:background="#55000000" /> 
</FrameLayout> 

Здесь мы создали FrameLayout, который имеет ImageView набор для соответствия размеров родителя, это будет ImageView, который отображает фотографию. Далее, есть TextView, который будет использоваться для отображения заголовка элемента и выравнивается в нижней части FrameLayout.

Далее, мы должны отредактировать ваш адаптер, чтобы использовать этот макет элемента сетки и отобразить правильную информацию.

public View getView(int position, View convertView, ViewGroup parent) { 

    // Inflate the single grid item layout 
    if (convertView == null) { 
     convertView = mLayoutInflater.inflate(R.layout.grid_item, parent, false); 
    } 

    // Set Image 
    ImageView thumbnail = convertView.findViewById(R.id.thumbnail); 
    if (thumbnail != null) { 
     thumbnail.setImageResource(mThumbIds[position]); 
    } 

    // Set Text 
    TextView title = convertView.findViewById(R.id.title); 
    if (title != null) { 
     title.setText("Image Number: " + position); 
    } 

    return convertView;  
} 

mLayoutInflater должны быть определены глобально в конструкторе с помощью

mLayoutInflater = LayoutInflater.from(context); 
+0

Это был бы самый эффективный способ сделать то, что вы хотите , поскольку использование пользовательского адаптера позволяет вам перерабатывать представления и настраивать ваш контент. –

Смежные вопросы