
Question:
I am trying to design layout like below but I am unable to design. I don't know how set layout without dp. How can I do without assigning <strong>dp to height & weight</strong>?
Items should be centered with same size of all card views and is it possible to not assign dp to image view height width but all images should be of same size.
<strong>XML</strong>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<android.support.v7.widget.CardView
android:id="@+id/card_view_news"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginBottom="10dp"
android:background="@drawable/bg"
card_view:cardCornerRadius="5dp"
card_view:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"
android:weightSum="2">
<ImageView
android:id="@+id/NewsImage"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:scaleType="fitXY" />
<TextView
android:id="@+id/NewsTitle"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight=".166"
android:ellipsize="end"
android:hint="News"
android:singleLine="true"
android:textColor="@color/primarytext"
android:textStyle="bold" />
<TextView
android:id="@+id/NewsDescription"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight=".5"
android:ellipsize="end"
android:hint="No News Feed"
android:maxLines="3"
android:text="TextView"
android:textSize="12sp" />
<TextView
android:id="@+id/News_Channel"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight=".166"
android:background="@drawable/bg"
android:ellipsize="end"
android:maxLines="1"
android:padding="5dp"
android:text="TextView"
android:textColor="#FFFF"
android:textSize="10sp"
android:textStyle="bold" />
<TextView
android:id="@+id/News_Time"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight=".166"
android:text="TextView"
android:textColor="@color/colorPrimary"
android:textSize="10sp"
android:textStyle="bold" />
</LinearLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
<strong>I want this</strong>
<a href="https://i.stack.imgur.com/Mnm5B.jpg" rel="nofollow"><img alt="enter image description here" class="b-lazy" data-src="https://i.stack.imgur.com/Mnm5B.jpg" data-original="https://i.stack.imgur.com/Mnm5B.jpg" src="https://etrip.eimg.top/images/2019/05/07/timg.gif" /></a>
Answer1:You have opened <RelativeLayout>
but didn't closed it. Try this code:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<android.support.v7.widget.CardView
android:id="@+id/card_view_news"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginBottom="10dp"
android:background="@drawable/bg"
card_view:cardCornerRadius="5dp"
card_view:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"
android:weightSum="2">
<ImageView
android:id="@+id/NewsImage"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:scaleType="fitXY" />
<TextView
android:id="@+id/NewsTitle"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight=".166"
android:ellipsize="end"
android:hint="News"
android:singleLine="true"
android:textColor="@color/primarytext"
android:textStyle="bold" />
<TextView
android:id="@+id/NewsDescription"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight=".5"
android:ellipsize="end"
android:hint="No News Feed"
android:maxLines="3"
android:text="TextView"
android:textSize="12sp" />
<TextView
android:id="@+id/News_Channel"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight=".166"
android:background="@drawable/bg"
android:ellipsize="end"
android:maxLines="1"
android:padding="5dp"
android:text="TextView"
android:textColor="#FFFF"
android:textSize="10sp"
android:textStyle="bold" />
<TextView
android:id="@+id/News_Time"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight=".166"
android:text="TextView"
android:textColor="@color/colorPrimary"
android:textSize="10sp"
android:textStyle="bold" />
</LinearLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
Answer2:If you will give constant height to card view it will not vary, and you can get your desired layout.
<android.support.v7.widget.CardView
android:id="@+id/card_view_news"
android:layout_width="wrap_content"
android:layout_height="300dp"
android:layout_centerInParent="true"
android:layout_marginBottom="10dp"
android:background="@drawable/bg"
card_view:cardCornerRadius="5dp"
card_view:cardElevation="2dp">