android:layout_height屏幕大小的50%

大家好,我只是在LinearLayout中实现了一个ListView,但是我需要定义LinearLayout的高度(它必须是屏幕高度的50%)。

<LinearLayout android:id="@+id/widget34" android:layout_width="300px" android:layout_height="235px" android:orientation="vertical" android:layout_below="@+id/tv_scanning_for" android:layout_centerHorizontal="true"> <ListView android:id="@+id/lv_events" android:textSize="18sp" android:cacheColorHint="#00000000" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/tv_scanning_for" android:layout_centerHorizontal="true"> </ListView> </LinearLayout> 

那可能吗?

我做了一个类似的button和EditText,但似乎没有工作的布局。

这是我的代码:

  //capture the size of the devices screen Display display = getWindowManager().getDefaultDisplay(); double width = display.getWidth(); //my EditText will be smaller than full screen (80%) double doubleSize = (width/5)*4; int editTextSize = (int) doubleSize; //define the EditText userName = (EditText) this.findViewById(R.id.userName); password = (EditText) this.findViewById(R.id.password); //set the size userName.setWidth(editTextSize); password.setWidth(editTextSize); 

谢谢! 🙂

设置其layout_height="0dp" *,添加一个空白的View下面(或空白ImageView或只是一个FrameLayout )与layout_height也等于0dp ,并设置两个视图有一个layout_weight="1"

这将填充屏幕的同时拉伸每个视图。 由于两者具有相同的重量,每个将占据屏幕的50%。

*见adamp的评论,为什么这个作品和其他真正有用的花絮。

这在xml中很容易实现。 将您的顶层容器设置为LinearLayout,然后根据需要设置orientation属性。 然后在那里放置两个在宽度和高度都有“填充父母”的线性布局。 最后,将这两个线性布局的weigth属性设置为1。

这是我的android:layout_height = 50%的活动:

 <?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:id="@+id/alipay_login" style="@style/loginType" android:background="#27b" > </LinearLayout> <LinearLayout android:id="@+id/taobao_login" style="@style/loginType" android:background="#ed6d00" > </LinearLayout> </LinearLayout> 

样式:

 <style name="loginType"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">match_parent</item> <item name="android:layout_weight">0.5</item> <item name="android:orientation">vertical</item> </style> 

最好的方法是使用

layout_height =“0dp”layout_weight =“0.5”

例如

 <WebView android:id="@+id/wvHelp" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="0.5" /> <TextView android:id="@+id/txtTEMP" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="0.5" android:text="TextView" /> 

WebView,TextView有50%的屏幕高度

你应该这样做:

 <LinearLayout android:id="@+id/widget34" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_below="@+id/tv_scanning_for" android:layout_centerHorizontal="true"> <ListView android:id="@+id/lv_events" android:textSize="18sp" android:cacheColorHint="#00000000" android:layout_height="1" android:layout_width="fill_parent" android:layout_weight="0dp" android:layout_below="@+id/tv_scanning_for" android:layout_centerHorizontal="true" /> </LinearLayout> 

也可以用pp代替px或者在这里阅读。

如果你想把你的屏幕垂直分成两部分(顶部30%+底部70%)

 <LinearLayout android:id="@+id/LinearLayoutTop" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="2"> </LinearLayout> <LinearLayout android:id="@+id/LinearLayoutBottom" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> </LinearLayout> 

为了确保视图的高度是屏幕的50%,我们可以在LinearLayout中创build两个子LinearLayout。 LinearLayout的每个孩子都应该有0.5的android:layout_weight ”来覆盖屏幕的一半

LinearLAyout应该将“ android:orientation ”设置为垂直

这里是供你参考的代码….这个代码包含两个高度为屏幕一半的button

 <LinearLayout android:orientation="vertical" android:layout_height="match_parent"> <LinearLayout android:layout_weight="0.5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:padding="10dp" android:layout_weight="0.5" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="button1" android:id="@+id/button1" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentBottom="true" /> <Button android:padding="10dp" android:layout_weight="0.5" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="button2" android:id="@+id/button2" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" /> </LinearLayout> <LinearLayout android:layout_weight="0.5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> </LinearLayout> </LinearLayout> 

这种为我工作。 虽然FAB不能独立浮动,但现在不会被推下去。

观察LinearLayout中给出的权重

 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:id="@+id/andsanddkasd"> <android.support.v7.widget.RecyclerView android:id="@+id/sharedResourcesRecyclerView" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="4" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_gravity="bottom|right" android:src="@android:drawable/ic_input_add" android:layout_weight="1"/> </LinearLayout> 

希望这可以帮助 :)

要实现这个壮举,请使用weightSum={amount of weight to distribute}定义外部线性布局。

它定义了最大权重和。 如果未指定,则通过添加所有孩子的layout_weight来计算总和。 例如,通过给它一个layout_weight为0.5,并将weightSum设置为1.0,可以给单个孩子50%的总可用空间。另一个例子是设置weightSum = 2,如果两个孩子设置layout_weight=1那么每个人将获得50%的可用空间。

WeightSum取决于父级布局中子级的数量。