RelativeLayout:android:layout_height无效

时间:2015-04-14 23:36:28

标签: android

由于某种原因,android:layout_height="200sp"属性没有任何效果。预览在Android Studio中正确绘制,但如果我运行我的应用程序,则列表项不会根据android:layout_height="200sp"更改其大小。我使用此RelativeLayout作为ListView的列表项。

有什么建议吗?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="120dip"
    android:background="#ffffff"
    >

    <ImageView
        android:id="@+id/icon"
        android:src="@drawable/ic_launcher"

        android:layout_width="50dip"
        android:layout_height="50dip"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true"
        android:layout_gravity="center"

        />

</RelativeLayout>

@Edit:

我做了一个更简单的例子。我假设列表项的高度为120dip,左侧有一个图标,大小为50x50 dip。实际情况是,由于某种原因,列表项与ImageView具有相同的高度。

public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    ViewHolder holder;
    if(convertView == null){
        convertView = mInflater.inflate(R.layout.listview_nearbylist_item, null);
        holder = new ViewHolder();
        //holder.text1 = (TextView) convertView.findViewById(R.id.text1);
        //holder.text2 = (TextView) convertView.findViewById(R.id.text2);
        //holder.text3 = (TextView) convertView.findViewById(R.id.text3);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    //holder.text1.setText(items.get(position).getRestaurantName());
    //holder.text2.setText(items.get(position).getRestaurantGenre());
    //holder.text3.setText("08:00 - 18:00 Uhr");

    return convertView;
}

3 个答案:

答案 0 :(得分:1)

convertView = mInflater.inflate(R.layout.listview_nearbylist_item, null);

这里有两个问题:

  1. 我不知道mInflater来自何处,但是getLayoutInflater()调用您的活动,而不是任何其他来源。否则,主题将无效。

  2. 使用inflate(R.layout.listview_nearbylist_item, parent, false)可以解决您的身高问题,如果没有其他方法可以避免基于RelativeLayout的行的其他问题。

答案 1 :(得分:0)

您应该只使用sp来调整字体大小。对于其他一切,你需要使用dip。有关详细信息,请参阅What is the difference between "px", "dp", "dip" and "sp" on Android?

关于您的问题,请用dip替换容器尺寸。仅将sp与textSize属性一起使用。你不应该有问题。

编辑:我还注意到您的布局中存在一些逻辑错误。您的第四个子窗口小部件(TextView)设置为与父窗口小部件的大小匹配 - 这将与布局中的其他所有内容重叠。你确定这是你想要的吗?这可以在技术上完成,但我不确定这是否是你想要的。

第一个子窗口小部件(图像视图)也应该与父窗口的顶部和底部对齐。如您所见,对于给定的尺寸,这是不可能的。有些东西必须在那里改变。

答案 2 :(得分:0)

试试这个

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="200dip"
android:padding="6sp"
android:background="#ffffff">