如何在LinearLayout中居imageButons并在它们下面设置textView?

时间:2015-08-14 01:38:40

标签: android android-layout

如何将这三个圆形图像居中并在它们下方设置textView?

linearLayout的上方和下方是水平线,其他代码位于ScrollView布局的子RelativeLayout中。

如果需要整个xml文件,请告诉我。

Layout

以下是xml代码:

<LinearLayout 
            android:id="@+id/linearLayout"
            android:layout_marginBottom="24dp"
            android:layout_marginTop="24dp"
            android:orientation="horizontal"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:layout_below="@+id/view" >

        <ImageButton
            android:id="@+id/Button1"
            android:layout_width="70dp"
            android:layout_height="70dp"                    
            android:layout_marginTop="16dp"
            android:layout_weight="1"
            android:layout_gravity="center_horizontal"
            android:scaleType="fitStart"
            android:background="@drawable/circle"
            android:src="@drawable/ic_horor_filmovi_ikonica" />

        <TextView 
            android:id="@+id/ime1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/Button1"
            android:layout_alignLeft="@+id/Button1"
            android:layout_alignRight="@+id/Button1"
            android:text="Ime"/>

        <ImageButton 
            android:id="@+id/Button2"
            android:background="@drawable/circle"
            android:src="@drawable/ic_horor_filmovi_ikonica"
            android:layout_marginTop="16dp"
            android:layout_weight="1"   
            android:layout_gravity="center_horizontal"            
            android:scaleType="fitStart"
            android:layout_width="70dp"
            android:layout_height="70dp"/>

        <TextView 
            android:id="@+id/ime2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/Button2"
            android:layout_alignLeft="@+id/Button2"
            android:layout_alignRight="@+id/Button2"
            android:text="Ime"/>

        <ImageButton 
            android:id="@+id/Button3"
            android:background="@drawable/circle"
            android:src="@drawable/ic_horor_filmovi_ikonica"
            android:layout_marginTop="16dp"
            android:layout_weight="1"        
            android:layout_gravity="center_horizontal"       
            android:scaleType="fitStart"
            android:layout_width="70dp"
            android:layout_height="70dp"/>

        <TextView 
            android:id="@+id/ime3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/Button3"
            android:layout_alignLeft="@+id/Button3"
            android:layout_alignRight="@+id/Button3"
            android:text="Ime"/>

    </LinearLayout>

3 个答案:

答案 0 :(得分:1)

1)使用具有垂直方向的嵌套LinearLayout来包含图像和文本,并将其添加到局外线性布局中。 2)设置局外人线性布局的重力到中心应该达到你想要的效果。

我没有测试过它。请告诉我,如果不行,或者我不清楚。

答案 1 :(得分:1)

通过将“相对布局”属性用于“线性布局”,您会犯一个错误。 例如layout_below,layout_alignLeft,layout_alignRight。 要实现您想要的目标,最简单的方法是将2线性布局用于相对布局根,如下所示:

<LinearLayout
    android:id="@+id/linearLayoutButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="24dp"
    android:layout_marginTop="24dp"
    android:orientation="horizontal">

    <ImageButton
        android:id="@+id/Button1"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="16dp"
        android:layout_weight="1"
        android:background="@drawable/circle"
        android:scaleType="fitCenter"
        android:src="@drawable/ic_horor_filmovi_ikonica" />


    <ImageButton
        android:id="@+id/Button2"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="16dp"
        android:layout_weight="1"
        android:background="@drawable/circle"
        android:scaleType="fitCenter"
        android:src="@drawable/ic_horor_filmovi_ikonica" />


    <ImageButton
        android:id="@+id/Button3"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="16dp"
        android:layout_weight="1"
        android:background="@drawable/circle"
        android:scaleType="fitCenter"
        android:src="@drawable/ic_horor_filmovi_ikonica" />

</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayoutTextview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/linearLayoutButton"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/ime1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Ime" />

    <TextView
        android:id="@+id/ime2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Ime" />

    <TextView
        android:id="@+id/ime3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Ime" />
</LinearLayout>

编辑:将scaleType从fitStart更改为fitCenter。

还有另一种解决方案,其优点是保持按钮大小是使用嵌套的线性布局:

<LinearLayout
    android:id="@+id/linearLayoutButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="3">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="24dp"
        android:layout_marginTop="24dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <ImageButton
            android:id="@+id/Button1"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_gravity="center"
            android:layout_marginTop="16dp"
            android:background="@drawable/circle"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_horor_filmovi_ikonica"/>

        <TextView
            android:id="@+id/ime1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Ime" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="24dp"
        android:layout_marginTop="24dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <ImageButton
            android:id="@+id/Button2"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_gravity="center"
            android:layout_marginTop="16dp"
            android:background="@drawable/circle"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_horor_filmovi_ikonica"/>

        <TextView
            android:id="@+id/ime2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Ime" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="24dp"
        android:layout_marginTop="24dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <ImageButton
            android:id="@+id/Button3"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_gravity="center"
            android:layout_marginTop="16dp"
            android:background="@drawable/circle"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_horor_filmovi_ikonica"/>

        <TextView
            android:id="@+id/ime3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Ime" />
    </LinearLayout>


</LinearLayout>

答案 2 :(得分:0)

你应该更改你的&#34; Android:width = warp_content&#34;根LinearLayout(换句话说,两个LinearLayout的父LinearLayout)到&#34; Android:width = match_parent&#34;。如果您希望将图像按钮放在中心,请注意父母的视图大小必须是整个屏幕。