Android:内部元素的layout_weight

时间:2015-08-17 23:29:38

标签: android xml android-layout-weight

我有一个LinearLayout,其中有两个项目:顶部的ImageView和底部固定大小的水平LinearLayout。

我想让我的ImageView视图填充所有空白区域。

所以它适用于:

<ImageView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>

但现在我想用CardView包装我的ImageView:

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

        card_view:cardBackgroundColor="#ffd9d9d9"
        card_view:cardCornerRadius="2dp"
        android:layout_margin="6dp"
        card_view:cardElevation="2dp">
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_centerInParent="true"/>
    </RelativeLayout>
</android.support.v7.widget.CardView>

当然它并不像我想要的那样工作。 (但它应该显示我想要的东西)

我想在第一个代码示例中获取ImageView,但包含在GridView中。

我该怎么做?

提前谢谢。

另外:有没有办法在cardview中居中使用relativelayout? layout_gravity =&#34;中心&#34;不起作用。我不知道为什么。 (为什么?)

非常感谢你。

1 个答案:

答案 0 :(得分:0)

  

我想在第一个代码示例中获取ImageView,但包含在GridView中。

你的CardView就是wrap_content,这意味着它的尺寸是在孩子们之后确定的。你的ImageView没有固定的尺寸,所以我要说的就是使用这个

void RemovePet(std::vector<Pet> & pets, std::string name) {
    pets.erase(
        std::remove_if(pets.begin(), pets.end(), [&](Pet const & pet) {
            return pet.Name == name;
        }),
        pets.end());
}
  

有没有办法在cardview中居中使用relativelayout? layout_gravity =&#34;中心&#34;不起作用。我不知道为什么。 (为什么?)

作为卡片视图的元素,而不是使用<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="centerInside" // or fitCenter /> 仅使用layout_gravitygravity删除center_horizontal,除非您需要它,然后您必须添加centerInParent RelativeLayout

中imageview的一个元素