0

私のグーグルではめったにない質問だと思われるものがあります。

ListView で行がどのように表示されるかを定義する XML ファイルがあります。

一度に 1 行だけ表示したいので、Adapter の getCount をオーバーライドします。これは、1 行だけを表示するのに最適です。私のfill_parentへの設定にもかかわらず、行がまだ画面いっぱいにならないという問題があります。

私は多くのことを試しましたが、最も近いのは RelativeLayout minHeight を設定することですが、それは画面サイズに固有のものです。したがって、要素が RelativeLayout で正しく設定されていないか、デバイスに基づいて minHeight を自動的に調整する方法が必要です。

私はこれを XML で行うことを好みますが、必要に応じて起動時にプログラムで調整できます。

親コンテナのコー​​ドは次のとおりです。

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:orientation="vertical">

    <ListView 
         android:layout_width="fill_parent" 
    android:layout_height="fill_parent" />

</RelativeLayout>

行 xml の場合:

<RelativeLayout
    android:layout_width="fill_parent"
    android:orientation="vertical" 
    android:layout_height="fill_parent">

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

    <TextView
        android:layout_centerHorizontal="true"
        android:layout_width="185dp"
        android:layout_height="25dp"
        android:textSize="20sp"
        android:layout_marginTop="15dp"
        android:gravity="center"
        android:inputType="none" />

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


    <TextView
        android:layout_centerHorizontal="true"
        android:layout_width="185dp"
        android:layout_height="25dp"
        android:textSize="20sp"
        android:layout_marginTop="60dp"
        android:gravity="center"
        android:inputType="none" />

    <TextView
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="35dp"
        android:layout_width="95dp"
        android:layout_height="50dp"
        android:textSize="18dp"
        android:layout_marginTop="110dp"
        android:gravity="center"
        android:inputType="none" />

    <org.gpgvm.widget.NumberPicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/btn_PrevLift"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
         android:layout_marginLeft="35dp"
        android:layout_marginBottom="120dp">
    </org.gpgvm.widget.NumberPicker>

    <TextView
        android:layout_alignParentRight="true"
        android:layout_marginRight="35dp"
        android:layout_width="95dp"
        android:layout_height="50dp"
        android:textSize="18dp"
        android:layout_marginTop="110dp"
        android:gravity="center"
        android:inputType="none" />

    <org.gpgvm.widget.NumberPicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btn_NextLift"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
         android:layout_marginRight="35dp"
        android:layout_marginBottom="120dp" >
    </org.gpgvm.widget.NumberPicker>

    <Button
        android:layout_width="100dp"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="30dp"
        android:layout_marginBottom="30dp" />

    <Button
        android:layout_width="100dp"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginRight="30dp"
        android:layout_marginBottom="30dp" />   

</RelativeLayout>
4

1 に答える 1

1

以下のコードを使用してデバイスの画面の高さを取得し、minHeight を動的に設定します

DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);

        int mHeight = metrics.heightPixels;
        int mWidth = metrics.widthPixels;

 RelativeLayout yourLayout= (RelativeLayout) findViewById(R.id.yourId);
    RelativeLayout.LayoutParams newParams = new RelativeLayout.LayoutParams(mWidth, mHeight);

    yourLayout.setLayoutParams(newParams );
于 2012-05-17T12:27:33.083 に答える