0

こんにちは、

ListView内でRelativeLayoutを機能させるのに問題があります。レイアウトを線形などに変更すると、期待どおりに動作するように見えますが、RelativeLayoutはすべてを重なり合うスペースに詰め込んでいます。今、私の知識のない推測は、それがすべてを一列に詰め込もうとしているということです。私はそれがその行を拡張するだろうと思ったが、おそらくそうではないか、それは問題ではない。

私のコードはスペースのために省略されていることに注意してください。

とにかく私の親XMLで:

<LinearLayout ..._width="fill_parent" ..._height="fill_parent" ...orientation="vertical" >
    <ListView ...layout_width="fill_parent" ...layout_height="fill_parent" />
</LinearLayout>

だから私の考えは、これはデバイスの画面を埋めるだろうと思っていました。EclipseのGraphicalLayoutビューでは、そうなっているように見えます。

ListViewの「行」の定義は次のとおりです。

<RelativeLayout width="fill_parent" height="fill_parent" >

    <ImageView
       android:layout_width="60dp"
        android:layout_height="30dp"
        android:layout_alignParentLeft="true"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="5dp" />
      .....
</RelativeLayout>

前述のように、これで使用可能なすべてのスペースがいっぱいになると思いましたが、ある種の「デフォルト」の行の高さしか埋められないようです。

何が欠けているのかわかりませんが、助けていただければ幸いです。

4

3 に答える 3

2

xmlでレイアウト属性、、、を使用layout-abovelayout-belowます。そうすれば、アイテムはあなたが行きたい場所の隣に置かれます。今、あなたはすべてを親に従って設定しているので、それらはすべて重複しますlayout-toRightOflayout-toLeftOf

于 2012-05-16T19:35:12.867 に答える
1

RelativeLayoutデフォルトでは、レイアウトの左上隅に固定された子が追加されます。

の非常に便利な属性を使用することでRelativeLayout、両方の子を配置できます

  • お互いに相対的、そして
  • 親ビューと比較して。

layout_alignParentLeft、、、、、、、、、、、、、..Right_ ..Top_ ..Bottom_ layout_centerInParent_ layout_centerHorizontal_ layout_centerVertical_ layout_toLeftOf_ ..toRightOf_ ..above_..below

これらの属性は、非常に効率的な(フラットな)方法で目的の表示を取得するのに役立ちます。そのため、読み続けて、複雑なビューに他のレイアウトコンテナーの代わりに使用することを検討することをお勧めします。

于 2012-05-16T19:48:53.657 に答える
0

ArrayAdapterのgetViewをオーバーライドしてから、高さと幅を動的に決定された画面サイズに設定することになりました。

...をちょきちょきと切る....

int[] iarry_ScrnDim = new int[2];

DisplayMetrics metrics = new DisplayMetrics();
metrics = ctx_Currnt.getResources().getDisplayMetrics();

iarry_ScrnDim[0] = metrics.heightPixels;
iarry_ScrnDim[1] = metrics.widthPixels;

return iarry_ScrnDim;

....をちょきちょきと切る....

if (vw_BigRow == null)
{
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    vw_BigRow = inflater.inflate(R.layout.liftdatalayout, null);
}

vw_BigRow.setMinimumHeight(mHeight);
vw_BigRow.setMinimumWidth(mWidth);
于 2012-06-08T01:36:57.807 に答える