簡體   English   中英

我們如何在Java文件中設置列表視圖的高度?

[英]how can we set Height of list view in java file?

嗨,我正在從Web上獲取List View的數據,並想根據數據設置List View的高度List元素中的元素沒有修復,所以我嘗試下面的代碼,但是它在運行時給出了錯誤,因此任何人都可以提供幫助我解決這個問題,謝謝

你可以在這里看到我的xml文件

<?xml version="1.0" encoding="utf-8"?>

<ScrollView android:id="@+id/sos_scroll"
    android:layout_above="@+id/last_lin" android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:layout_below="@+id/date"
    android:layout_marginTop="5dip" android:fadingEdge="none"
    android:scrollbars="none">

    <RelativeLayout android:layout_width="fill_parent"
        android:id="@+id/sos_rel" android:layout_height="wrap_content"
        android:orientation="vertical">

        <ListView android:paddingLeft="1dip" android:scrollbars="none"
            android:cacheColorHint="#00000000" android:focusable="true"
            android:id="@+id/list" android:dividerHeight="2dip"
            android:layout_below="@+id/date" android:footerDividersEnabled="false"
            android:headerDividersEnabled="false" android:layout_marginRight="12dip"
            android:listSelector="@android:color/transparent"
            android:background="@drawable/newshape_list"
            android:layout_marginLeft="12dip" android:paddingRight="1dip"
            android:layout_height="wrap_content" android:layout_width="fill_parent"
            android:fadingEdge="none" android:divider="#A9ABAD"></ListView>

        <RelativeLayout android:layout_width="wrap_content"
            android:layout_marginLeft="10dip" android:layout_marginBottom="5dip"
            android:layout_marginRight="10dip" android:layout_height="wrap_content"
            android:layout_below="@+id/list">
            <TableLayout android:layout_width="wrap_content"
                android:id="@+id/add_table" android:layout_centerHorizontal="true"
                android:background="@drawable/listback" android:layout_height="wrap_content"
                android:stretchColumns="1">
                <TableRow android:id="@+id/add_data">
                    <ImageView android:layout_width="wrap_content"
                        android:src="@drawable/addbuttonimage" android:id="@+id/que1"
                        android:layout_height="wrap_content"></ImageView>
                    <TextView android:text="Add New Stress..."
                        android:layout_width="wrap_content" android:textStyle="bold"
                        android:textColor="#000000" android:layout_marginLeft="5dip"
                        android:textSize="15sp" android:layout_height="wrap_content"
                        android:padding="3dip" />
                </TableRow>
            </TableLayout>
        </RelativeLayout>
    </RelativeLayout>
</ScrollView>
<LinearLayout android:id="@+id/last_lin"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:paddingBottom="52dip" android:paddingTop="2dip"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true">
    <Button android:layout_width="wrap_content" android:textColor="#FFFFFF"
        android:id="@+id/done" android:textStyle="bold" android:text="Save"
        android:layout_height="wrap_content" android:background="@drawable/savebutton"></Button>
</LinearLayout>

錯誤在這里

08-22 11:00:34.930: ERROR/AndroidRuntime(324): Uncaught handler: thread main exiting due to uncaught exception
08-22 11:00:34.959: ERROR/AndroidRuntime(324): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.RelativeLayout$DependencyGraph.findRoots(RelativeLayout.java:1291)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.RelativeLayout$DependencyGraph.getSortedViews(RelativeLayout.java:1238)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.RelativeLayout.sortChildren(RelativeLayout.java:279)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:299)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:893)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.ScrollView.onMeasure(ScrollView.java:276)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:569)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:361)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at  android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:569)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:361)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.View.measure(View.java:7964)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.ViewRoot.performTraversals(ViewRoot.java:763)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.os.Looper.loop(Looper.java:123)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at android.app.ActivityThread.main(ActivityThread.java:4363)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at java.lang.reflect.Method.invokeNative(Native Method)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at java.lang.reflect.Method.invoke(Method.java:521)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
08-22 11:00:34.959: ERROR/AndroidRuntime(324):     at dalvik.system.NativeStart.main(Native Method)

您是否考慮過完全動態創建ListView? 換句話說,嘗試以編程方式創建ListView,然后將其手動添加到布局中。

另外,是否有什么特別的原因需要您手動指定ListView的高度? ListView會根據您擁有的數據量自動調整大小,如果您的數據量超出屏幕顯示的大小,它將變為可滾動的。

編輯

關於您的第二條評論和包括的XML布局,我建議您這樣做。

您的XML文件應僅包含一個根元素(因此稱為根)。 當前,您具有ScrollView和LinearLayout。 我建議您僅使用LinearLayout作為根。 您可以將其用作粗略的骨架:

<LinearLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_height="fill_parent"
  android:layout_width="fill_parent"
  ... >

    <ListView
        ...
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:layout_weight="1" />
    <TableLayout
        ...
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:layout_weight="0" />
    <Button
        ...
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:layout_weight="0" />

</LinearLayout>

此布局基本上將Button推到最底部,將TableLayout推到最底部,但在Button上方。 您的ListView將占用TableLayout上方的其余空間。 (順便說一句,TableRow本質上是一種專門的LinearLayout。您可以簡單地用水平LinearLayout替換TableLayout以獲得相似的結果,除非您計划向表中添加多行並且需要對列進行相同大小調整。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM