我做一个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>