Android Button 将图像置于中心,将文本置于底部
Posted
技术标签:
【中文标题】Android Button 将图像置于中心,将文本置于底部【英文标题】:Android Button Place Image in center and text at bottom 【发布时间】:2013-02-23 00:24:16 【问题描述】:我想把图片放在中间,把文字放在按钮下面,我尝试设置 android:gravity 但无法正确设置,下面附上图片:
下面是我的xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical"
android:paddingLeft="10.0dip"
android:paddingTop="10.0dip"
android:paddingRight="10.0dip"
android:paddingBottom="10.0dip"
android:background="@drawable/background_img"
>
<LinearLayout
android:layout_
android:layout_
android:layout_weight="1"
android:orientation="horizontal"
android:paddingLeft="10.0dip"
android:paddingTop="10.0dip"
android:paddingRight="10.0dip"
android:paddingBottom="10.0dip"
>
<Button
android:layout_
android:layout_
android:layout_weight="1"
android:id="@+id/button_listen"
android:text="@string/listen"
android:drawableTop="@drawable/listen_btn"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_gravity="center"
/>
<Button
android:layout_
android:layout_
android:layout_weight="1"
android:id="@+id/button_gallery"
android:text="@string/gallery"
android:drawableTop="@drawable/gallery_btn"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_gravity="center"
/>
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_weight="1"
android:orientation="horizontal"
android:paddingLeft="10.0dip"
android:paddingTop="10.0dip"
android:paddingRight="10.0dip"
android:paddingBottom="10.0dip"
>
<Button
android:layout_
android:layout_
android:layout_weight="1"
android:id="@+id/button_play"
android:text="@string/play"
android:drawableTop="@drawable/play_btn"
android:layout_marginLeft="10dp"
android:layout_gravity="center"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
/>
<Button
android:layout_
android:layout_
android:layout_weight="1"
android:id="@+id/button_find"
android:text="@string/find"
android:drawableTop="@drawable/test_btn"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_gravity="center"
/>
</LinearLayout>
</LinearLayout>
将图像和文本置于其下方的正确方法是什么?
非常感谢。
【问题讨论】:
【参考方案1】:试试它对我的工作
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".MainActivity" >
<Button
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="151dp"
android:onClick="onClick"
android:drawableTop="@drawable/ic_launcher"
android:text="Button" />
</RelativeLayout>
【讨论】:
4 个按钮都一样吗? 我尝试了一个它可以工作,所以它适用于所有 4 个,除非有其他错误【参考方案2】:尝试将按钮更改为 LinearLayout 并在 fakebutton 上使用相同的 onclicklistener
<LinearLayout
android:id="@+id/fakeButton"
android:layout_
android:layout_
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<ImageView
android:layout_
android:layout_
android:src="@drawable/icon_big_evento" />
<TextView
android:layout_
android:layout_
android:text="@string/menu_about" />
</LinearLayout>
【讨论】:
【参考方案3】:我跟着 DjHacktorReborn cmets 做了布局,这里是冻结的一个
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@drawable/background_img"
android:orientation="vertical" >
<LinearLayout
android:layout_
android:layout_
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="10" >
<LinearLayout
android:layout_
android:layout_
android:layout_weight="4.1"
android:orientation="vertical" >
</LinearLayout>
<TableLayout
android:layout_
android:layout_
android:layout_weight="2"
android:orientation="horizontal"
android:stretchColumns="*" >
<TableRow android:layout_weight="1" >
<RelativeLayout
android:layout_
android:layout_ >
<Button
android:id="@+id/button_listen"
android:layout_
android:layout_
android:layout_centerInParent="true"
android:background="@drawable/main_list"
android:paddingTop="90dp"
android:text="@string/listen"
android:textStyle="bold"
android:textColor="#FFFFFF" />
<ImageView
android:id="@+id/main_icon_content_image_view"
android:layout_
android:layout_
android:layout_centerInParent="true"
android:src="@drawable/listen_btn" />
</RelativeLayout>
<RelativeLayout
android:layout_
android:layout_ >
<Button
android:id="@+id/button_gallery"
android:layout_
android:layout_
android:background="@drawable/main_list"
android:paddingTop="90dp"
android:text="@string/gallery"
android:textStyle="bold"
android:textColor="#FFFFFF" />
<ImageView
android:id="@+id/main_icon_schedule_image_view"
android:layout_
android:layout_
android:layout_centerInParent="true"
android:src="@drawable/gallery_btn" />
</RelativeLayout>
</TableRow>
<TableRow android:layout_weight="1" >
<RelativeLayout
android:layout_
android:layout_ >
<Button
android:id="@+id/button_play"
android:layout_
android:layout_
android:background="@drawable/main_list"
android:ellipsize="marquee"
android:paddingTop="90dp"
android:text="@string/play"
android:textStyle="bold"
android:textColor="#FFFFFF"
/>
<ImageView
android:layout_
android:layout_
android:layout_centerInParent="true"
android:src="@drawable/play_btn" />
</RelativeLayout>
<RelativeLayout
android:layout_
android:layout_ >
<Button
android:id="@+id/button_find"
android:layout_
android:layout_
android:background="@drawable/main_list"
android:paddingTop="90dp"
android:text="@string/find"
android:textStyle="bold"
android:textColor="#FFFFFF" />
<ImageView
android:layout_
android:layout_
android:layout_centerInParent="true"
android:src="@drawable/test_btn" />
</RelativeLayout>
</TableRow>
</TableLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_weight="4.1"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
</LinearLayout>
这是更新的结果
感谢您的建议
【讨论】:
以上是关于Android Button 将图像置于中心,将文本置于底部的主要内容,如果未能解决你的问题,请参考以下文章
在不使用绝对位置、顶部和左侧的情况下将按钮置于图像中心的替代方法