这就是我想要实现的目标:
但是,我不知道如何判断左侧视图是否至少增长到最小高度,还可以作为右视图。当我将高度设置为'match_parent'和'minHeight'时,这就是我得到的:
正如您在第一个项目中看到的那样,图像视图被裁剪。当我使用'wrap_content'时,从右视图和左视图都显示了所有内容,但我无法获得我想要的设计(图表放在底部,图像之间有空白空间):
我错过了什么?这是用于列表项的XML布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/list_item_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="4dp">
<LinearLayout
android:id="@+id/list_item_left_layout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:minHeight="98dp"
android:orientation="vertical">
<ImageView
android:id="@+id/avatar"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/avatar"/>
<LinearLayout
android:id="@+id/list_item_overlay_layout"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="bottom"
android:orientation="vertical">
<ImageView
android:id="@+id/chart"
android:layout_width="40dp"
android:layout_height="58dp"
android:src="@drawable/chart"/>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/item_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="8"
android:paddingLeft="8dp"
android:paddingRight="8dp"/>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:1)
您可以使用以下代码进行设计。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFF"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/list_item_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="4dp">
<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/list_item_left_layout"
android:layout_toRightOf="@+id/list_item_left_layout"
android:minHeight="98dp"
android:orientation="vertical">
<TextView
android:id="@+id/item_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:maxLines="8"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:text="111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
android:textColor="@android:color/darker_gray" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/list_item_left_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/relativeLayout"
android:orientation="vertical">
<ImageView
android:id="@+id/avatar"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentTop="true"
android:src="@drawable/avatar" />
<ImageView
android:id="@+id/chart"
android:layout_width="40dp"
android:layout_height="58dp"
android:layout_alignParentBottom="true"
android:src="@drawable/common_signin_btn_icon_pressed_dark" />
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
答案 1 :(得分:0)
You can use Imageview.setTranslationX() or ImageView.setTranslationY() to move chart Imageview to new position.
Making a layout expandable is explained in this article from the blog. here[enter link description here][1]
[1]: http://gmariotti.blogspot.in/2013/09/expand-and-collapse-animation.html
Hope it helps ..
答案 2 :(得分:0)
由于Mayur的回答,我找到了一个技巧。这不是解决方案,但我可以使用它作为解决方法,直到找到正确的方法。
minHeight
正确的观点。结果,如果在文本中
右手边很小,它仍然会使用最少量的
高度。match_parent
。现在这个
如果右视图,视图将展开以填充所有可用空间
增长为更大的文本提供空间。这就是它的样子:
以下是我必须做的代码更改:
$ diff -U 5 list_item_layout_original.xml list_item_layout.xml
--- list_item_layout_original.xml 2015-12-03 09:13:35.000000000 +1100
+++ list_item_layout.xml 2015-12-03 09:11:42.000000000 +1100
@@ -45,10 +45,11 @@
<TextView
android:id="@+id/item_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
+ android:minHeight="98dp"
android:maxLines="8"
android:paddingLeft="8dp"
android:paddingRight="8dp"/>
</LinearLayout>