我正在尝试为CardView实现以下布局:
每个都是不同的CardView
我希望每个CardView都具有相同的“列”宽度。我对重量属性知之甚少,我想我错了。据我所知,weight属性将告诉元素的“优先级”到ocuppy space。我试过这个解决方案:
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginBottom="2dp"
android:layout_marginTop="2dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:id="@+id/main_flat_item"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<com.example.myapp.VerticalTextView
android:text="CODE"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="3dp"
android:background="@color/td_main_blue"
android:layout_gravity="center"
android:gravity="center"
android:textColor="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:text="Title"
android:textSize="20sp"
android:padding="5dp"
android:layout_weight="0.5"
/>
<View
android:layout_width="1dp"
android:layout_height="70dp"
android:layout_gravity="center"
android:background="@color/grayE" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center"
android:layout_weight="0.3">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Taxa compra"
android:textSize="12sp"
android:textColor="@color/grayB"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Taxa Compra"
android:textSize="16sp"
android:textColor="@color/td_green"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Taxa venda"
android:textSize="12sp"
android:textColor="@color/grayB"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Taxa Venda"
android:textSize="16sp"
android:textColor="@color/td_red" />
</LinearLayout>
</LinearLayout>
<View
android:layout_width="1dp"
android:layout_height="70dp"
android:layout_gravity="center"
android:background="@color/grayE" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.2"
android:layout_gravity="center"
android:gravity="center">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/star_checkbox" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
但是,尽管我已经设定了一些重量属性,但我最终得到的结果是:
所以:
提前致谢。
答案 0 :(得分:2)
布局权重作为块中所有元素的比率。例如,如果textviews
中有三个linearlayout
,权重为1,2和1,则第二个textview
将是其他两个的两倍,或占用50%可用空间。总和无关紧要,只是数字之间的比例,所以在上面的例子中我可以使用0.5:1:0.5或100:200:100,它会出现相同的结果。
因此,在您的代码中,在最外面的LinearLayout
中,您只有三个具有权重的项目:第一个TextView
和两个嵌套LinearLayout
,分别为0.5,0.3和0.2。因此,Android将为所有固定宽度的元素提供空间,然后在剩余空间中,TextView
将获得5/10,LinearLayout
将获得3/10和2/10。
此外,如果重量项目在拉伸方向上的大小为0dp,则重量最佳。如果您使用的是Android Studio,它应该会给您一个警告。