1

我环顾四周,但大多数都没有任何意义。有些有第三个参数,至少不再存在于 Android 文档中。有人知道如何做到这一点吗?到目前为止我有这个:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            convertView = inflater.inflate(R.layout.day_view_item, parent, false);
        }

        ((TextView)convertView.findViewById(R.id.day_hour_side)).setText(array[position]);
        if(count == 1) {
            LinearLayout layout = (LinearLayout)convertView.findViewById(R.id.day_event_layout);
            TextView create = new TextView(parent.getContext());
            create.setLayoutParams(new LayoutParams(0, 30));
            create.setBackgroundColor(Color.BLUE);
            create.setText("Test");

            layout.addView(create);
            count = count -1;
        }

        return convertView;
    }

我正在尝试将它添加到 aLinearLayoutListView,因此您在代码中看到的方法。一个问题是TextView我运行它时没有出现。所以我在想我需要layout_weight。虽然,我对一件事感到困惑。构造函数的宽度和高度参数是什么值LayoutParams(dp 或 px)?我还将添加我尝试添加的 xml,以防万一这很有帮助:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

<TextView 
    android:id="@+id/day_hour_side"
    android:layout_width="wrap_content"
    android:layout_height="62dp"
    android:text="12AM"
    android:background="#bebebe"
    android:layout_weight="0"
    android:textSize="10dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"/>
<LinearLayout 
    android:id="@+id/day_event_layout"
    android:layout_width="0dp"
    android:layout_height="62dp"
    android:layout_weight="1"
    android:paddingTop="1dp"
    android:paddingBottom="1dp"
    android:orientation="horizontal" ></LinearLayout>

4

1 回答 1

4

首先,LayoutParams构造函数使用像素(根据文档)。

要以layout_weight编程方式设置,您需要使用LinearLayout.LayoutParams. ViewGroup.LayoutParams正如您指出的那样,没有第三个参数,但前者有。

试试这个:

create.setLayoutParams(new LinearLayout.LayoutParams(0, 30, 1.0f));

ViewGroup.LayoutParamsView任何类型布局中的任何布局参数的集合(因为这些布局都是ViewGroups)。当您有特定布局时,例如 a LinearLayout,您可以使用LinearLayout.LayoutParams来访问特定于该布局类型的内容。在这种情况下, slayout_weight是特定LinearLayout的,因此您必须使用LinearLayout.LayoutParams来访问此权重参数。

您还应该layout_weight="0"TextViewXML 中删除 。如果这仍然不能解决它,给你LinearLayout一个背景颜色,看看它是否完全可见,然后用你的发现和任何更改/新代码编辑你的 OP。

于 2012-08-04T03:08:04.383 回答