Je souhaite ajouter du texte sous l'ImageView cliquable. C'est comme si je voulais nommer ImageView mais je ne pouvais pas placer le texte comme je le veux. ImageView cliquable dans ScrollView. Quand j'ai essayé d'ajouter TextView juste en dessous de l'image, cela a gâché mon ScrollView
Ceci est l'image d'exemple comme ce que je veux faire
et ceci est mon xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".Huruf">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:weightSum="10"
android:background="#00bedc"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_gravity="center"
android:background="#fe8f2f"
android:padding="20dp"
android:layout_height="match_parent">
<ImageView
android:id="@+id/huruf_close"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/back_white"
android:layout_gravity="left" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="30dp"
android:text="@string/huruf"
android:textColor="#FFFFFF" />
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_marginBottom="15dp"
android:layout_height="wrap_content">
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="4sp"
android:layout_weight="8"
android:alignmentMode="alignBounds"
android:columnCount="3"
android:columnOrderPreserved="false"
android:useDefaultMargins="true"
>
<ImageView
android:id="@+id/a"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/aa"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/b"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/bb"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/c"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/cc"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/d"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/dd"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/e"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/ee"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/f"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/ff"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/g"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/gg"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/h"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/hh"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/i"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/ii"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/j"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/jj"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/k"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/kk"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/l"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/ll"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/m"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/mm"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/n"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/nn"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/o"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/oo"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/p"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/pp"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/q"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/qq"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/r"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/rr"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/s"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/ss"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/t"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/tt"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/u"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/uu"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/v"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/vv"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/w"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/ww"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/x"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/xx"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/y"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/yy"
android:layout_marginBottom="15dp"
/>
<ImageView
android:id="@+id/z"
android:layout_height="100dp"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_gravity="fill_horizontal"
android:src="@drawable/zz"
android:layout_marginBottom="15dp"
/>
</GridLayout>
</ScrollView>
</LinearLayout>
</RelativeLayout>
PS Je suis vraiment désolé si l'explication n'est pas très claire, c'est un peu difficile d'écrire mon problème
3 Réponses :
Utilisez le code ci-dessous pour obtenir votre mise en page réelle.
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="8"
android:alignmentMode="alignBounds"
android:columnCount="3"
android:columnOrderPreserved="false"
android:padding="4sp"
android:useDefaultMargins="true">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:orientation="vertical">
<ImageView
android:id="@+id/a"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_gravity="fill_horizontal"
android:layout_marginBottom="15dp"
app:srcCompat="@drawable/ic_size_plus" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18dp"
android:textStyle="bold"
android:gravity="center"
android:text="AA" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:orientation="vertical">
<ImageView
android:id="@+id/b"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_gravity="fill_horizontal"
android:layout_marginBottom="15dp"
app:srcCompat="@drawable/ic_size_plus" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18dp"
android:textStyle="bold"
android:gravity="center"
android:text="BB" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:orientation="vertical">
<ImageView
android:id="@+id/c"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_gravity="fill_horizontal"
android:layout_marginBottom="15dp"
app:srcCompat="@drawable/ic_size_plus" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18dp"
android:textStyle="bold"
android:gravity="center"
android:text="CC" />
</LinearLayout>
</GridLayout>
Vous devriez utiliser la vue en grille, consultez ce didacticiel: https://www.viralandroid.com/2016/04/android-gridview-with-image-and-text.html
Je pense que vous devriez créer votre propre mise en page. Pour faire comme ici: À quoi ça ressemble
Créez simplement votre propre mise en page contenant textView et imageView:
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:columnCount="3">
<com.example.empty.myapplication.Layout.ImageWithText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_columnSpan="1"
android:layout_columnWeight="1"
android:gravity="center"
app:description="google"
app:image="@drawable/common_google_signin_btn_icon_dark" />
<com.example.empty.myapplication.Layout.ImageWithText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_columnSpan="1"
android:layout_columnWeight="1"
android:gravity="center"
app:description="google"
app:image="@drawable/common_google_signin_btn_icon_dark" />
<com.example.empty.myapplication.Layout.ImageWithText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_columnSpan="1"
android:layout_columnWeight="1"
android:gravity="center"
app:description="google"
app:image="@drawable/common_google_signin_btn_icon_dark" />
</GridLayout>
Ensuite, vous devez ajouter des attributs dans values / attrs.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/image_with_text"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_margin="10dp"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@mipmap/ic_launcher" />
<TextView
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textAlignment="center" />
Créer votre nouvelle mise en page de l'élément:
<resources>
<declare-styleable name="ImageWithText">
<attr name="image" format="reference"/>
<attr name="description" format="string" />
</declare-styleable>
Et utilisez-la comme ceci:
public class ImageWithText extends LinearLayout {
String description;
Drawable image;
public ImageWithText(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.image_with_text, this);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ImageWithText, 0, 0);
ImageView imageImageView = findViewById(R.id.image);
image = a.getDrawable(R.styleable.ImageWithText_image);
imageImageView.setImageDrawable(image);
TextView descriptionTextView = findViewById(R.id.description);
description = a.getString(R.styleable.ImageWithText_description);
descriptionTextView.setText(description);
}
Si vous n'obtenez aucun aperçu, essayez de reconstruire tout le projet
pourquoi n'utilisez-vous pas une vue sur le recyclage?
Utilisez GridLayoutManager avec Recyclerview et gonflez votre vue selon l'image.