当前位置: 代码迷 >> Android >> android weight布局有关问题
  详细解决方案

android weight布局有关问题

热度:35   发布时间:2016-04-28 02:41:17.0
android weight布局问题
我做一个android界面,用weight分配的大小,页面分为上,中,下三部分,但是如果中间位置放的文字过多,三部分的比例就改变了。我想问下如何才能实现,中间内的文字过多时,直接在中间布局内显示滚动条,但是并不影响页面的总布局(即上中下的分配比例)?

就是下面代码中“名称1”位置,如果该位置文字在页面内显示不下,则页面就发生了变形。

<?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="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button_plan_year"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="@drawable/selector_click"
            android:focusable="true"
            android:gravity="center"
            android:text="上1" />

        <Button
            android:id="@+id/button_plan_month"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="@drawable/selector"
            android:gravity="center"
            android:text="上2" />

        <Button
            android:id="@+id/button_plan_week"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="@drawable/selector"
            android:gravity="center"
            android:text="上3" />

        <Button
            android:id="@+id/button_plan_day"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="@drawable/selector"
            android:gravity="center"
            android:text="上4" />
    </LinearLayout>

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="@color/line_light" />

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="@color/line_dark" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="20"
        android:background="#C7F5F8"
        android:orientation="vertical" >

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#C7F5F8"
            android:gravity="left"
            android:text="名称1"
            android:textColor="#aa0000" />
    </LinearLayout>

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="@color/line_light" />

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="@color/line_dark" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.5"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button_plan"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="@drawable/selector_click"
            android:gravity="center"
            android:text="下1" />

        <Button
            android:id="@+id/button_new"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="@drawable/selector"
            android:gravity="center"
            android:text="下2" />

        <Button
            android:id="@+id/button_my"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="@drawable/selector"
            android:gravity="center"
            android:text="下3" />
    </LinearLayout>

</LinearLayout>

------解决思路----------------------
引用:

如你所见这个线性布局的width为填充满水平方向且orientation="horizontal",这就意味着该线性布局里面的子控件如果只有一个的话,即使width=0dp,只要weight="1"也将填满整个水平方向。再举一个简单的,现在假设你的手机width=400dp且这个线性布局里面有两个Button,其中一个width=50dp并未设置weight,而另一个width=0dp,weight="1"。那么你看到的效果将是第一个Button占了手机width=50dp,第二个Button占了手机width=350dp。总之设置weight的大概用意就是你们剩下不要的空间都给我。假设现在又有第三个Button:width=50dp并未设置weight。那么你看到的效果将是第一个Button占了手机width=50dp,第二个Button占了手机width=300dp,第三个Button占了手机width=50dp。假设现在又有第四个Button:width=0dp,weight="1"。那么你看到的效果将是第一个Button占了手机width=50dp,第二个Button占了手机width=100dp,第三个Button占了手机width=50dp,第四个Button占了手机width=100dp最后你会发现大家weight值一样时会平分所剩空间比例。而weight值越小分的越多


<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
  
        <Button
            android:id="@+id/button_plan"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#33cc99"
            android:gravity="center"
            android:text="下1" />
  
        <Button
            android:id="@+id/button_new"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#ffffcc"
            android:gravity="center"
            android:text="下2" />
  
        <Button
            android:id="@+id/button_my"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#99ccff"
            android:gravity="center"
            android:text="下3" />
    </LinearLayout>
  相关解决方案