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);
layout_height="0dp"
*を設定し、その下に空白View
(または空白ImageView
または単なるFrameLayout
)を追加し、layout_height
も0dp
に等しく、両方のビューにlayout_weight="1"
これにより、各ビューが画面全体に均等に広がります。両方とも同じ重量なので、それぞれが画面の50%を占めます。
*それがなぜ機能するのか、その他の本当に役立つヒントについては、adampのコメントを参照してください。
これはxmlで簡単に行えます。一番上のコンテナをLinearLayoutに設定し、必要に応じて方向属性を設定します。次に、その内側に、幅と高さに「塗りつぶし親」を持つ2つのlinearlayoutsを配置します。最後に、これらの2つのlinearlayoutsの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%があります
画面を2つの部分に垂直に分割する場合(top30%+ bottom70%)はとても簡単です。
<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に2つのサブLinearLayoutを作成します。子LinearLayoutのそれぞれには、画面の半分を覆うために「Android:layout_weight of .5」が必要です。
親のLinearLAyoutには、「Android:orientation」を「vertical」に設定する必要があります
。
。
ここに参考のためのコードがあります...このコードには、画面の半分の高さの2つのボタンが含まれています
<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>
あなたはそのようなことをする必要があります:
<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 .
この種の私のために働いた。 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>
お役に立てれば :)
親レイアウトで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>