问题描述
|
我正在构建一个Twitter类型的客户端。这是我的ListView行的样子
我希望它看起来更像:
如何正确设置头像的填充和位置?这是我的XML:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<RelativeLayout android:id=\"@+id/RelativeLayout01\" xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\">
<ImageView
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_alignParentTop=\"true\"
android:layout_alignParentLeft=\"true\"
android:id=\"@+id/avatarImageView\">
</ImageView>
<TextView
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:id=\"@+id/usernameTextView\"
android:textStyle=\"bold\"
android:layout_toRightOf=\"@+id/avatarImageView\"
android:layout_alignParentTop=\"true\" android:textColor=\"#636363\">
</TextView>
<TextView
android:id=\"@+id/bodyTextView\"
android:layout_below=\"@+id/usernameTextView\"
android:layout_toRightOf=\"@+id/avatarImageView\"
android:layout_width=\"fill_parent\"
android:layout_height=\"wrap_content\" android:textColor=\"#636363\">
</TextView>
<TextView
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_toRightOf=\"@+id/usernameTextView\"
android:id=\"@+id/dateTextView\"
android:text=\"date\" android:textColor=\"#636363\">
</TextView>
</RelativeLayout>
解决方法
<ListView android:id=\"@android:id/list\"
android:layout_width=\"fill_parent\" android:layout_height=\"fill_parent\"
android:layout_weight=\"1.0\"
android:textColor=\"#444444\"
android:divider=\"@drawable/list_divider\"
android:dividerHeight=\"1px\"
android:cacheColorHint=\"#00000000\">
</ListView>
创建您自己的名为“ list_divider”的分隔线渐变,这是一个放置在可绘制文件夹中的xml文件。您只需指定左侧,中间和右侧的颜色即可:
list_divider.xml
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<layer-list
xmlns:android=\"http://schemas.android.com/apk/res/android\">
<item>
<shape>
<gradient
android:startColor=\"#999999\"
android:centerColor=\"#555555\"
android:endColor=\"#999999\"
android:height=\"1px\"
android:angle=\"0\" />
</shape>
</item>
</layer-list>
列表中每一行的布局。这也可以通过稍后在代码中指定的布局xml文件来完成。
row.xml
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:layout_width=\"fill_parent\"
android:layout_height=\"fill_parent\"
android:orientation=\"horizontal\"
android:padding=\"4px\">
<ImageView android:id=\"@+id/avatar\"
android:layout_width=\"48px\"
android:layout_height=\"48px\"/>
<LinearLayout
android:layout_width=\"fill_parent\"
android:layout_height=\"wrap_content\"
android:orientation=\"vertical\"
android:paddingLeft=\"4px\">
<LinearLayout
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:orientation=\"vertical\"
android:layout_weight=\"1\"
android:gravity=\"center_vertical\">
<TextView android:id=\"@+id/name\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_weight=\"1\"
android:gravity=\"left\"
android:textStyle=\"bold\"
android:singleLine=\"true\"
android:ellipsize=\"end\"
android:textColor=\"#444444\"
android:padding=\"0px\"/>
<TextView android:id=\"@+id/email_url\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_weight=\"1\"
android:gravity=\"left\"
android:singleLine=\"true\"
android:ellipsize=\"end\"
android:padding=\"0px\"
android:textSize=\"10px\"/>
<TextView android:id=\"@+id/postTitle\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_weight=\"1\"
android:gravity=\"left\"
android:singleLine=\"true\"
android:ellipsize=\"end\"
android:padding=\"0px\"
android:textSize=\"10px\"/>
<TextView android:id=\"@+id/comment\"
android:orientation=\"vertical\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:singleLine=\"false\"
android:textColor=\"#666666\"
android:maxLines=\"5\"
android:ellipsize=\"end\"/>
<TextView android:id=\"@+id/status\"
android:orientation=\"vertical\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:singleLine=\"true\"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
编辑:删除行号,因为我是一个好人
,快去吧:您只使用线性布局而不是相对布局。并使用其重量。最后一件重要的事情是将视图包装在布局组件中。如ImageView在另一个linearlayout或relative中的ImageView等。因此,尝试与此结合使用,效果会很好。同样,对于列表分隔符,您可以设置一个null可绘制或自定义形状等。行背景也可以是形状或某种颜色或可绘制。
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout android:id=\"@+id/LinearLayout01\" xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:orientation=\"horizontal\" android:layout_width=\"fill_parent\" android:layout_height=\"130dp\">
<LinearLayout android:layout_height=\"fill_parent\" android:id=\"@+id/linearLayout1\" android:layout_width=\"wrap_content\"
android:orientation=\"vertical\">
<ImageView android:id=\"@+id/avatarImageView\" android:layout_height=\"75dp\" android:layout_width=\"75dp\"></ImageView>
</LinearLayout>
<LinearLayout android:layout_height=\"fill_parent\" android:id=\"@+id/linearLayout2\" android:orientation=\"vertical\"
android:layout_width=\"fill_parent\">
<LinearLayout android:id=\"@+id/linearLayout3\" android:layout_width=\"fill_parent\" android:layout_height=\"wrap_content\">
<TextView android:text=\"TextView\" android:textStyle=\"bold\" android:layout_height=\"wrap_content\"
android:textColor=\"#636363\" android:id=\"@+id/usernameTextView\" android:layout_weight=\"1\" android:layout_width=\"fill_parent\"></TextView>
<TextView android:text=\"date\" android:layout_height=\"wrap_content\" android:textColor=\"#636363\"
android:id=\"@+id/dateTextView\" android:layout_width=\"wrap_content\"></TextView>
</LinearLayout>
<LinearLayout android:layout_height=\"fill_parent\" android:id=\"@+id/linearLayout4\" android:layout_width=\"fill_parent\">
<TextView android:text=\"TextView\" android:layout_height=\"wrap_content\" android:textColor=\"#636363\"
android:id=\"@+id/bodyTextView\" android:layout_width=\"fill_parent\"></TextView>
</LinearLayout>
</LinearLayout>
</LinearLayout>