gpt4 book ai didi

java - 如何从屏幕右侧开始将 `ListView` 项包装到wrap_content?

转载 作者:行者123 更新时间:2023-12-01 14:38:35 25 4
gpt4 key购买 nike

我有一个 ListView,它有一个自定义适配器来提供自定义的 View。每个列表项都会“更改”其所在屏幕的一侧(就像围绕垂直轴翻转它一样)。这是我正在讨论的示例:

enter image description here

照片中的深灰色框覆盖了包含用户名和照片的 ProfilePictureViewTextView。如果用户未登录,则没有姓名和照片(如照片中的第二个列表项所示)。正如您从照片中看到的,背景图像环绕着 View 中第一个和第三个项目的内容(从左侧开始到右侧结束)。问题是:面向的项目另一种方法是忽略我的“wrap_content”调用并“匹配”父 View (如您在第二项中看到的)。我相信它正确地包装了内容,但是有什么方法可以从屏幕右侧开始并将内容包装到左侧吗?

以下是该项目 View 的 XML 代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right|center_vertical">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentRight="true"
android:gravity="right" >

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

<com.namespace.RobotoTextView
android:id="@+id/list_item_user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="@color/white"
custom:typeface="roboto_light"/>

<com.namespace.RobotoTextView
android:id="@+id/list_item_user_score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="36sp"
android:textStyle="bold"
android:textColor="@color/waf_warm_yellow_orange"
custom:typeface="roboto_bold"/>

</LinearLayout>

<com.facebook.widget.ProfilePictureView
android:id="@+id/list_item_user_image"
android:layout_width="69dp"
android:layout_height="69dp"
android:layout_margin="10dp" />

</LinearLayout>

那么,如何将 View 正确地向右对齐并使背景图像正确地环绕其内容?

最佳答案

为左侧和右侧创建单独的列表项布局。在您的适配器中...

@Override
public int getViewTypeCount() {
return 2;
}

@Override
public int getItemViewType(int position) {
return position % 2;
}

public View getView(int position, View convertView, ViewGroup parent) {
int viewType = getItemViewType(position);
int layoutRes = viewType == 0 ? R.layout.list_item_left : R.layout.list_item_right;

View row = inflater.inflate(layoutRes);
/* ... */
}

基本上,您的适配器报告两种不同的 View 类型,并且您的 getView 在它们之间交替。 (如果有其他逻辑来确定左与右,请在 getItemViewType() 中实现。)

关于java - 如何从屏幕右侧开始将 `ListView` 项包装到wrap_content?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com