0

我正在努力用CardCiew小部件更新我的应用程序,我已经更新了一些简单的布局。

当我使用LinearLayout带有属性的集合时,layout_weight我得到了我想要的不同结果的问题。

布局.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_selector"
    android:orientation="horizontal"
    android:id="@+id/technologie_ll_item">

    <android.support.v7.widget.CardView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_weight="10"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content">

            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="2">

                <de.hdodenhof.circleimageview.CircleImageView
                    android:id="@+id/iv_logo_technologie"
                    android:layout_width="75dp"
                    android:layout_height="75dp"
                    app:border_width="2dp"
                    app:border_color="#99069d78"
                    android:src="@drawable/after"
                    android:paddingLeft="0dp" />

            </LinearLayout>

            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="5"
                android:layout_height="fill_parent"
                android:gravity="center_vertical"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/tv_nom_technologie"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textSize="17dp"
                    android:textAllCaps="true"
                    android:paddingLeft="10dp"
                    android:gravity="center_vertical"
                    android:text="Orthodontics"/>

            </LinearLayout>

            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="fill_parent"
                android:gravity="right"
                android:orientation="horizontal">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/indic" />

            </LinearLayout>

        </LinearLayout>

    </android.support.v7.widget.CardView>

</LinearLayout>

结果

在此处输入图像描述

4

1 回答 1

4

也许这可以帮助你。

方法一

(注意我已经CircleImageView用 a改变了你的,Imageview所以我可以让它没有错误地工作;))

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/technologie_ll_item">

<android.support.v7.widget.CardView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:weightSum="10"
        android:layout_height="wrap_content"
        android:layout_width="match_parent">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2">

            <ImageView
                android:id="@+id/iv_logo_technologie"
                android:layout_width="75dp"
                android:layout_height="75dp"
                android:paddingLeft="0dp" />
        </LinearLayout>

        <TextView
            android:id="@+id/tv_nom_technologie"
            android:layout_width="0dp"
            android:layout_weight="7"
            android:layout_height="wrap_content"
            android:textSize="17sp"
            android:textAllCaps="true"
            android:paddingLeft="10dp"
            android:layout_gravity="center_vertical"
            android:text="Orthodontics" />

        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="fill_parent"
            android:gravity="right"
            android:orientation="horizontal">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </LinearLayout>
    </LinearLayout>
</android.support.v7.widget.CardView>

如您所见,您将拥有 1LinearLayoutandroid:weightSum10(只是为了使比例更好)容纳 3 个组件。第一个LinearLayout包含CircleImageViewImageView在我的代码中)的容器的 aandroid:layout_weight为 2,文本的 aandroid:layout_weight为 7,箭头容器的 aandroid:layout_weight为 1。

也许您可以摆脱LinearLayout持有箭头的箭头,并直接在 中设置权重ImageView,我认为如果您应用箭头,因为android:src它将根据给定图像的比例调整大小,但我现在不确定这一点。

方法二:

另一种解决方案是RelativeLayout,如下面的代码:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:id="@+id/technologie_ll_item">

    <android.support.v7.widget.CardView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <!-- CircleImageView here -->
            <ImageView
                android:id="@+id/iv_logo_technologie"
                android:layout_width="75dp"
                android:layout_height="75dp"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:paddingLeft="0dp" />

            <!-- Arrow drawable here -->
            <ImageView
                android:id="@+id/arrow"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <!-- Text here, between circle and arrow -->
            <TextView
                android:id="@+id/tv_nom_technologie"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="17sp"
                android:layout_toRightOf="@id/iv_logo_technologie"
                android:layout_toLeftOf="@id/arrow"
                android:textAllCaps="true"
                android:paddingLeft="10dp"
                android:layout_centerVertical="true"
                android:text="Orthodontics" />
        </RelativeLayout>
    </android.support.v7.widget.CardView>
</LinearLayout>

有了这个,你删除了LinearLayout,你将只有 3 个组件,也许性能更好。

希望其中的一些可以帮助你交配。

问候!

于 2014-10-29T12:41:20.447 回答