我们可以以某种方式制作“layout_weight”但是宽度?

时间:2017-08-16 19:59:56

标签: android android-layout-weight

在Android Studio中,使用线性布局,使用layout_weight - 我可以非常轻松地解决我的问题(为每个视图设置layout_weight我需要多少),但我在layout_width上挣扎(在一个屏幕上应用看起来不错但在另一个屏幕上没有),对于初学者来说,了解dp,sp,px等对我来说有点压倒性。我们可以以某种方式制作“layout_weight”而不是宽度吗?

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.android.myapplication3.MainActivity">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="#FAFAFA">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="0"
        android:text="The title will be here "  

 //The length of this text up here is permanent, and is 23 characters, also 
 //that much length for the texts in TextViews in other Linear Layouts below
 //While in all CheckBoxes in all Layouts the text is same and permanent and
 //will contain 7 characters.
 //Also i will add a onClick in ImageView.

        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
        android:textColor="#E91E63"
        android:textStyle="bold" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="0"
        android:src="@drawable/ic_dehaze_black_24dp" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginStart="10dp"
        android:layout_marginTop="10dp"
        android:layout_weight="0"
        android:text="CheckBox1"
        android:textColor="#E91E63"
        android:textStyle="bold"/>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="#FAFAFA">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="0"
        android:text="The title will be here "
        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
        android:textColor="#E91E63"
        android:textStyle="bold" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="0"
        android:src="@drawable/ic_dehaze_black_24dp" />

    <CheckBox
        android:id="@+id/checkBox2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginStart="10dp"
        android:layout_marginTop="10dp"
        android:layout_weight="0"
        android:text="CheckBox2"
        android:textColor="#E91E63"
        android:textStyle="bold"/>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="#FAFAFA">

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="0"
        android:text="The title will be here "
        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
        android:textColor="#E91E63"
        android:textStyle="bold" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="0"
        android:src="@drawable/ic_dehaze_black_24dp" />

    <CheckBox
        android:id="@+id/checkBox3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginStart="10dp"
        android:layout_marginTop="10dp"
        android:layout_weight="0"
        android:text="CheckBox3"
        android:textColor="#E91E63"
        android:textStyle="bold"/>

 </LinearLayout>

2 个答案:

答案 0 :(得分:0)

是的,你可以。

不要将android:layout_height设置为零,而是设置android:layout_width。并按照与高度相同的方式工作,但宽度相同。

答案 1 :(得分:0)

为单个组件使用 layout_weight ;确保您在根标记声明中使用 weightsum 属性。

使用layout_weight时:

  1. 在水平方向的同一组件中提供 layout_width = 0dp
  2. layout_height = 0dp 表示垂直方向。
  3. 沿着 layout_height / layout_width 混合layout_weight,其值 wrap_contet / match_parent 不会给出正确的外观