AbsListView.LayoutParams のレイアウト グラビティを設定するにはどうすればよいですか?
変数に基づいてレイアウトの重力を設定する必要があるカスタム配列アダプターでこれを使用しています。リストの子にはリニア レイアウト ルートが含まれていますが、アダプターでは、LinearLayout.LayoutParams を AbsListView.Layout パラメーターにキャストできないというエラーが発生するため、LinearLayout パラメーターを設定できません。
そこで、AbsListView の layout_gravity を設定しようとしましたが、重力のオプションがありません。
この場合、layout_gravity をプログラムで設定するにはどうすればよいですか?
編集:(ソースコードを追加)
リストビューの親
<?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>
リストビューの子
<?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 で何を呼び出す必要がありますか?
編集2:
考えられる解決策: 子全体をルートの下の別の要素の下にラップすると、メソッドを使用して簡単に実行できるレイアウト重力の代わりに重力を設定できます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" >
2 番目の線形レイアウトは役に立ちませんが、これで作業は完了です。