大家好我刚刚在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>
这可能吗?
我为一个按钮和一个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);
谢谢! :)
答案 0 :(得分:76)
设置其layout_height="0dp"
*,在其下方添加空白View
(或空白ImageView
或仅FrameLayout
)layout_height
也等于{ {1}},并将两个视图设置为0dp
这将在填充屏幕时平均拉伸每个视图。由于两者具有相同的重量,每个都占据屏幕的50%。
*请参阅adamp的评论,了解其原因和其他真正有用的花絮。
答案 1 :(得分:6)
这在xml中很容易做到。将顶部容器设置为LinearLayout并根据需要设置orientation属性。然后在那个地方内部有两个线性布局,它们在宽度和高度上都有“填充父级”。最后,将这两个linearlayouts的weigth属性设置为1。
答案 2 :(得分:6)
这是我的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>
答案 3 :(得分:3)
最好的方法是使用
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%的屏幕高度
答案 4 :(得分:0)
你应该做那样的事情:
<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>
还可以使用 dp 代替 px 或阅读here。
答案 5 :(得分:0)
<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>
答案 6 :(得分:0)
为了确保视图的高度是屏幕的50%,我们可以在LinearLayout中创建两个子LinearLayouts。每个子LinearLayout都应该有&#34; android:layout_weight &#34; 0.5 覆盖屏幕的一半
父级LinearLAyout应该有&#34; android:orientation &#34;设置为垂直
这里有代码供您参考.... 此代码包含两个高度为屏幕一半的按钮
<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>
答案 7 :(得分:0)
这种方式对我有用。 虽然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>
希望这会有所帮助:)
答案 8 :(得分:0)
要实现此功能,请使用weightSum={amount of weight to distribute}
定义外部线性布局。
它定义了最大权重总和。如果未指定,则通过添加所有子项的layout_weight来计算总和。例如,这可以通过给予layout_weight为0.5并将weightSum设置为1.0来为单个子项提供总可用空间的50%。另一个示例将设置weightSum = 2,如果这两个子集设置为{{1然后每个人都会获得50%的可用空间。
WeightSum取决于父布局中的子项数量。
答案 9 :(得分:0)
您可以在父布局上使用android:weightSum="2"
并在子布局上使用android:layout_height="1"
。
<LinearLayout
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:weightSum="2"
>
<ImageView
android:layout_height="1"
android:layout_width="wrap_content" />
</LinearLayout>