gpt4 book ai didi

android - AbsListView LayoutParams 设置布局重力

转载 作者:太空狗 更新时间:2023-10-29 15:47:06 25 4
gpt4 key购买 nike

如何设置 AbsListView.LayoutParams 的布局引力?

我在自定义数组适配器中使用它,我需要根据变量设置布局引力。我的列表子项包含线性布局根,但在适配器中,我无法设置 LinearLayout 参数,因为我收到 LinearLayout.LayoutParams 无法转换为 AbsListView.Layout 参数的错误。

因此,我尝试为 AbsListView 设置 layout_gravity,但它没有重力选项。

在这种情况下,如何以编程方式设置 layout_gravity?

编辑:(添加源代码)

Listview 父级

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/messaging_background"
android:orientation="vertical"
android:padding="2dp" >

<ListView
android:id="@+id/messageThread"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/list_separator"
android:layout_alignParentTop="true"
android:layout_marginTop="5dp"
android:cacheColorHint="#00000000"
android:divider="@null"
android:dividerHeight="2dp"
android:fastScrollEnabled="false"
android:listSelector="#00000000"
android:transcriptMode="disabled" />

<View
android:id="@+id/list_separator"
android:layout_width="match_parent"
android:layout_height="1.0dip"
android:layout_above="@+id/footer"
android:background="@android:color/white" />

<LinearLayout
android:id="@+id/footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal" >

<ImageButton
android:id="@+id/filter"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.1"
android:background="@null"
android:contentDescription="@string/message_filter_button"
android:scaleType="fitCenter"
android:src="@drawable/filter" />

<EditText
android:id="@+id/send_message_text"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="0.8"
android:imeOptions="actionSend"
android:inputType="textMultiLine"
android:maxLines="6"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:scrollbarDefaultDelayBeforeFade="200"
android:scrollbarFadeDuration="300"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical" />

<ImageButton
android:id="@+id/send"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.1"
android:background="@null"
android:contentDescription="@string/send_message_button"
android:scaleType="fitCenter"
android:src="@drawable/send_btn" />
</LinearLayout>

</RelativeLayout>

Listview 子组件

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

<TextView
android:id="@+id/messaging_bubble_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:fontFamily="sans-serif-light"
android:maxWidth="200dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textIsSelectable="true" />

<TextView
android:id="@+id/messaging_bubble_time"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:fontFamily="sans-serif-light"
android:gravity="center"
android:paddingRight="5dp"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textIsSelectable="false" />

<ImageView
android:id="@+id/messaging_bubble_megaphone"
android:layout_width="20dp"
android:layout_height="match_parent"
android:contentDescription="@string/message_child_megaphone"
android:src="@drawable/megaphone"
android:visibility="gone" />

</LinearLayout>

我应该在我的适配器的 getView 中调用什么来根据适配器中的变量将 child 推到右边?

编辑 2:

可能的解决方案:将整个 child 包裹在根下的另一个元素下,然后您可以设置重力而不是布局重力,这可以使用 setGravity() 方法轻松完成。

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

<LinearLayout
android:id="@+id/messaging_bubble_wrapper"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@drawable/incoming"
android:orientation="vertical"
tools:ignore="UselessParent" >

第二个线性布局没用,但有了它就可以完成工作!

最佳答案

要更改引力,您可以将现有的行布局包装在另一个布局中(例如 FrameLayout),然后只需在该额外布局的 LinearLayout 上设置引力(现在可以在父级内部移动)。

为避免在布局中添加额外的层级,您可以保留当前行布局并将根 LinearLayout 替换为 RelativeLayout 并更改其中 View 的位置根据您想要的重力。

关于android - AbsListView LayoutParams 设置布局重力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17292997/

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