将带有文本的图像按钮放置在线性布局中

时间:2016-10-14 16:17:26

标签: android android-layout

我需要在屏幕顶部放置5 imageButton个。我是这样做的LinarLayout

<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="match_parent"
    tools:context="com.example.terrormachine.swipeapp.NewAdFragment">


    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/image"
            android:id="@+id/imageButton6"
            android:layout_weight="1"
            android:scaleType="fitCenter" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/image"
            android:id="@+id/imageButton7"
            android:layout_weight="1"
            android:scaleType="fitCenter" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/image"
            android:id="@+id/imageButton8"
            android:layout_weight="1"
            android:scaleType="fitCenter" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/image"
            android:id="@+id/imageButton9"
            android:layout_weight="1"
            android:scaleType="fitCenter" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/image"
            android:id="@+id/imageButton10"
            android:layout_weight="1"
            android:scaleType="fitCenter" />
    </LinearLayout>
</RelativeLayout>

问题是我需要将文本置于每个图像的下方。我尝试了几种解决方案,似乎没有一种方法适合我。 我试过这个:

Android Text Below Icon (button) How to add a text under the image button in Android? How to place text below a Button or a ImageButton?

他们中的一些人做了这个伎俩,但图像没有缩放。在我的情况下,我无法在下面设置文字。有没有办法做到这一点? 我没有必要使用LinearLayout,但我无法找到任何正确的方法将它们平均分开并具有屏幕宽度。欢迎任何想法。

这是我的目标: enter image description here

3 个答案:

答案 0 :(得分:1)

将图像按钮和textview包装成线性布局,如下所示:

<LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1">
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    app:srcCompat="@drawable/image"
                    android:id="@+id/imageButton6"

                    android:scaleType="fitCenter" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Main"
                    android:layout_gravity="center"
                    android:textColor="@android:color/black"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1">
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    app:srcCompat="@drawable/image"
                    android:id="@+id/imageButton7"

                    android:scaleType="fitCenter" />


                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Main"
                    android:layout_gravity="center"
                    android:textColor="@android:color/black"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1">
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    app:srcCompat="@drawable/image"
                    android:id="@+id/imageButton8"

                    android:scaleType="fitCenter" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Main"
                    android:layout_gravity="center"
                    android:textColor="@android:color/black"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1">
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    app:srcCompat="@drawable/image"
                    android:id="@+id/imageButton9"

                    android:scaleType="fitCenter" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Main"
                    android:layout_gravity="center"
                    android:textColor="@android:color/black"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1">
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    app:srcCompat="@drawable/image"
                    android:id="@+id/imageButton10"

                    android:scaleType="fitCenter" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Main"
                    android:layout_gravity="center"
                    android:textColor="@android:color/black"/>
            </LinearLayout>






        </LinearLayout>

答案 1 :(得分:0)

你应该有几种方法,我能想到的第一件事是代替ImageViews,你可以改为使用TextViews,并在每个TextView中为你的图像指定drawableTop:

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/image" 
        ...etc  />

否则,如果您需要ImageViews,可以将ImageViews和TextViews包装到单独的Linears中以获得对齐:

<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="match_parent"
    tools:context="com.example.terrormachine.swipeapp.NewAdFragment">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_parent"
            android:layout_height="wrap_parent" >

            <ImageButton />
            <TextView />
        </LinearLayout>

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_parent"
            android:layout_height="wrap_parent" >

            <ImageButton />
            <TextView />
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

答案 2 :(得分:0)

不要考虑将文字添加到图片按钮。

考虑将图像添加到文本按钮:

            <Button
                android:id="@+id/imageButton9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:drawableTop="@drawable/image"
                android:text="Main"/>

使用drawablePadding和其他设置,您可以调整按钮以查看您的需求。要摆脱按钮边界,请使用android:background="@null"