努力在水平列表视图中居中获取图像

时间:2015-07-16 06:13:26

标签: android android-layout

我正在努力让图像处于中心位置,这些图像位于水平列表视图中。以及我希望图像获得相等的空间(重量)。如果我添加两个图像,它们每个将采用0.5个权重(空间)的布局。如果我加三,他们每人需要0.33重量(空格)。

下图显示了我从代码中获得的内容。

enter image description here

我想要的就像下面一样。

enter image description here

以下是我的代码。

activity_main.xml中

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="4"
    tools:context="com.PinchZoom.pinchzoomexampletwo.MainActivity" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="3dp"
        android:layout_weight="0.5"
        android:gravity="center_vertical"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/img_back"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:contentDescription="@string/img_back_description"
            android:src="@drawable/back_icon"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/txt_app_name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:text="@string/txt_app_name"
            android:textSize="35px"
            android:textStyle="bold" />

        <ImageView
            android:id="@+id/img_menu"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:contentDescription="@string/img_menu_description"
            android:src="@drawable/menu_icon" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:orientation="horizontal"
        android:weightSum="2" >

        <com.PinchZoom.pinchzoomexampletwo.TouchImageView
            android:id="@+id/img_to_be_zoomed"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:src="@drawable/img" >
        </com.PinchZoom.pinchzoomexampletwo.TouchImageView>

        <com.PinchZoom.pinchzoomexampletwo.TouchImageView
            android:id="@+id/img_to_be_zoomed_mirror"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:src="@drawable/img" >
        </com.PinchZoom.pinchzoomexampletwo.TouchImageView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout_bottom_hscrolling"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:gravity="center_vertical"
        android:orientation="horizontal" >

        <com.devsmart.android.ui.HorizontalListView
            android:id="@+id/horizontal_list_view"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:background="#ddd" >
        </com.devsmart.android.ui.HorizontalListView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout_bottom_hscrolling_first"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:visibility="gone" >

        <com.devsmart.android.ui.HorizontalListView
            android:id="@+id/horizontal_list_view_first"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:background="#ddd" >
        </com.devsmart.android.ui.HorizontalListView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout_bottom_hscrolling_second"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:visibility="gone" >

        <com.devsmart.android.ui.HorizontalListView
            android:id="@+id/horizontal_list_view_second"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:background="#ddd" >
        </com.devsmart.android.ui.HorizontalListView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout_bottom_hscrolling_third"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:visibility="gone" >

        <com.devsmart.android.ui.HorizontalListView
            android:id="@+id/horizontal_list_view_third"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:background="#ddd" >
        </com.devsmart.android.ui.HorizontalListView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout_bottom_hscrolling_fourth"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:visibility="gone" >

        <com.devsmart.android.ui.HorizontalListView
            android:id="@+id/horizontal_list_view_fourth"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:background="#ddd" >
        </com.devsmart.android.ui.HorizontalListView>
    </LinearLayout>

</LinearLayout>

horizo​​ntal_list_view_single_item.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/single_img_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/single_image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:contentDescription="@string/horizontal_list_view_single_img_desc"
        android:paddingRight="10dp" />

</LinearLayout>

提前致谢。

编辑:在尝试了Bunny的回答后得到了这个结果。

enter image description here

2 个答案:

答案 0 :(得分:0)

paddingRight移除single_image并使用layout_weight=1layout_width="0"。同时为layout_gravity = "center_horizontal"设置single_image。切勿使用imageview的静态高度宽度。同时在layout_height="wrap_content"

中设置com.devsmart.android.ui.HorizontalListView

答案 1 :(得分:0)

我为水平列表视图项创建了以下布局,并且它位于中心

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rootView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@color/light_black"
android:orientation="horizontal" >

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

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="5dp"
    android:orientation="vertical" >

<TextView
    android:id="@+id/category"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@android:color/white"
    android:text="Machines" />

<TextView
    android:id="@+id/count"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@android:color/white"
    android:text="100+" />

</LinearLayout>

<View
    android:layout_width="2dp"
    android:layout_marginLeft="15dp"
    android:layout_height="fill_parent"/>
</LinearLayout>