我有一个视图,看起来像这个atm:
我希望前3个黑色行填满~70%的屏幕。屏幕尺寸无关紧要。我认为我可以通过为布局分配权重来实现它,似乎并不那么容易。正如你所看到的,我已经用按钮实现了它,它们总是伸展到宽度。
所以,这是我的xml代码:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/main"
android:weightSum="10" //mean summary 100%
>
<LinearLayout
android:id="@+id/lin1"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:orientation="horizontal"
android:weightSum="3"
android:layout_weight="2.3" //23% for each row
>
<Button
android:id="@+id/button1"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:background="@drawable/greenbtn"
android:onClick="onClick"
android:text="Layout Normal" />
<Button
android:id="@+id/button2"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:background="@drawable/greenbtn"
android:onClick="onClick"
android:text="Pad2" />
<Button
android:id="@+id/button3"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@drawable/greenbtn"
android:onClick="onClick"
android:text="Pad3" />
</LinearLayout>
<LinearLayout
android:id="@+id/lin2"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_marginTop="2dp"
android:orientation="horizontal"
android:weightSum="3"
android:layout_weight="2.3" >
<Button
android:id="@+id/button4"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:background="@drawable/greenbtn"
android:onClick="onClick"
android:text="Pad4" />
<Button
android:id="@+id/button5"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:background="@drawable/greenbtn"
android:onClick="onClick"
android:text="Pad5" />
<Button
android:id="@+id/button6"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@drawable/greenbtn"
android:onClick="onClick"
android:text="Pad6" />
</LinearLayout>
<LinearLayout
android:id="@+id/lin3"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_below="@id/lin2"
android:orientation="horizontal"
android:weightSum="3"
android:layout_weight="2.3" >
<Button
android:id="@+id/button7"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:background="@drawable/greenbtn"
android:onClick="onClick"
android:text="Pad7" />
<Button
android:id="@+id/button8"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_marginRight="2dp"
android:layout_weight="1"
android:background="@drawable/greenbtn"
android:onClick="onClick"
android:text="Pad8" />
<Button
android:id="@+id/button9"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@drawable/greenbtn"
android:onClick="onClick"
android:text="Pad9" />
</LinearLayout>
<LinearLayout
android:id="@+id/lin5"
android:layout_width="fill_parent"
android:layout_below="@id/lin3"
android:layout_height="60dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:layout_weight="2.1" > //21% for toggles
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:onClick="onClick"
android:textOff="Loop1 Off"
android:textOn="Loop1 ON" />
<ToggleButton
android:id="@+id/toggleButton2"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:onClick="onClick"
android:textOff="Loop2 Off"
android:textOn="Loop2 ON" />
<ToggleButton
android:id="@+id/toggleButton3"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:onClick="onClick"
android:textOff="Loop3 Off"
android:textOn="Loop3 ON" />
<ToggleButton
android:id="@+id/toggleButton4"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1"
android:onClick="onClick"
android:textOff="Loop4 Off"
android:textOn="Loop4 ON" />
</LinearLayout>
<LinearLayout
android:id="@+id/lin6"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1" //10% for webview
>
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="50dp"
/>
</LinearLayout>
</LinearLayout>
正如你所看到的,在我的想法中,我给了每个黑色行23%的屏幕(23x3 = 69%),切换为21%,webview为10%。
非常感谢任何帮助。
答案 0 :(得分:1)
@Daler你试图使用重量平衡高度,所以你必须将layout_height设置为0dp
另外,在我看来,你使用太多的LinearLayouts,也许你可以省去一些来节省内存,处理时间,响应能力。我猜是这样的:
<Linear Layout - vertical - match_parent >
// 0.269 * 3 = 0.7
<linear layout 1 - horizontal weight = 0.269 layout_height=0dp> the three views </>
<linear layout 2 - horizontal weight = 0.269 layout_height=0dp> the three views </>
<linear layout 3 - horizontal weight = 0.269 layout_height=0dp> the three views </>
// the other 30%
<linear layout 4 - horizontal weight = 0.15 layout_height=0dp> the three views </>
<linear layout 5 - horizontal weight = 0.15 layout_height=0dp> the three views </>
</end the top linear layout>
假设黑色区域的3行应为70%。这就是我从你的形象中理解的。
答案 1 :(得分:0)
如果你把
android:layout_weight="1"
然后你的体重是10岁 它默认需要90%。 如果你想在10%的任何布局上显示你的按钮,你应该将权重属性赋予9(如果权重为10)。
请参阅here以获取有关WeightSum和Weight Attributes的更多说明。 希望它会有所帮助。