对齐按钮+图像+文本连续(android)

时间:2015-02-04 18:28:21

标签: android image button alignment

我试图在屏幕中央连续排列3个按钮。每个按钮都有一个背景颜色,一个图像和图像下的一些文本。我尝试过使用LinearLayout,但我无法将图像放在按钮上。我尝试过RelativeLayout,我设法让它们连续排列,但它们不在屏幕的中心。有什么建议吗?

    <Button
    android:id="@+id/start"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingTop="85dp"
    android:paddingBottom="10dp"
    android:paddingLeft="25dp"
    android:paddingRight="25dp"
    android:background="@drawable/light"
    android:text="@string/start"
    android:textColor="@color/text"
    android:textSize="8pt"
    android:textStyle="bold"
    android:layout_marginTop="0dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_alignParentTop="true" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/image"
    android:src="@drawable/hstart"
    android:layout_alignLeft="@+id/start"
    android:layout_alignStart="@+id/start"
    android:layout_alignRight="@+id/start"
    android:layout_alignEnd="@+id/start"
    android:layout_marginRight="20dp"
    android:layout_marginLeft="20dp"
    android:layout_marginTop="0dp" />

sample

2 个答案:

答案 0 :(得分:2)

这是您的Button视图(布局文件夹中的your_btn_view.xml):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:clickable="true"
    android:background="@android:drawable/btn_default"
    android:gravity="center" >

    <ImageView
        android:id="@+id/btn_iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_add" />

    <TextView
        android:id="@+id/btn_tv"
        android:text="text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

这是包含三个按钮的布局视图:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <include
        android:id="@+id/btn1"
        layout="@layout/your_btn_view" />

    <include
        android:id="@+id/btn2"
        layout="@layout/your_btn_view" />

    <include
        android:id="@+id/btn3"
        layout="@layout/your_btn_view" />

</LinearLayout>

然后,访问并填写TextView中相应的ImageViewonCreate(),如下所示:

@Override
public void onCreate(Bundle sIS){
    super.onCreate(sIS);
    setContentView(R.layout.that_layout_above, this, false);

    LinearLayout btn1 = (LinearLayout)findViewById(R.id.btn1);

    ((TextView)btn1.findViewById(R.id.btn_tv)).setText("my text");
    ...

答案 1 :(得分:1)

使用LinearLayout为每个按钮/图像组合保存RelativeLayout。 “嵌套”布局对于获得这种类型的视觉效果非常常见。