我得到了TextView
basket_item_list_options
。此TextView
的文本是动态设置的,可能很长。
问题是,如果它很长,则此Button
右侧的三个TextView
被推出视图。我想设置TextView
的{{1}}的宽度,Button
仍在视图中,它只为自己使用更多行(使用更多高度)。
有人知道我需要做些什么改变吗?或者我是否需要以编程方式执行此操作?
当TextView内容不太多时,它的外观如下:
字符串“Nichts:Stuff;”是TextView
的内容。如果此内容过多,则右侧的三个buttons
将被推出视图。
以下是布局代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/item_list_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<LinearLayout
android:id="@+id/basket_item_list_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/basket_item_list_image"
android:layout_toRightOf="@+id/basket_item_list_image"
android:orientation="vertical">
<TextView
android:id="@+id/basket_item_list_itemname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="false"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_toEndOf="@+id/basket_item_list_image"
android:layout_toRightOf="@+id/basket_item_list_image"
android:text="ItemName"
android:textColor="@android:color/black"
android:textSize="24sp"
tools:layout_editor_absoluteX="158dp"
tools:layout_editor_absoluteY="37dp" />
<TextView
android:id="@+id/basket_item_list_options"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:text="Options" />
</LinearLayout>
<Button
android:id="@+id/basket_item_list_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/basket_item_list_description"
android:layout_toRightOf="@+id/basket_item_list_description"
android:minWidth="1dp"
android:text="+" />
<Button
android:id="@+id/basket_item_list_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:layout_toEndOf="@+id/basket_item_list_increment"
android:layout_toRightOf="@+id/basket_item_list_increment"
android:minWidth="1dp"
android:text="-" />
<ImageButton
android:id="@+id/basket_item_list_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:layout_toEndOf="@+id/basket_item_list_decrement"
android:layout_toRightOf="@+id/basket_item_list_decrement"
android:text="-"
app:srcCompat="@drawable/ic_garbage" />
<ImageView
android:id="@+id/basket_item_list_image"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="false"
android:layout_alignParentStart="false"
android:layout_alignParentTop="false"
android:layout_alignWithParentIfMissing="false"
android:layout_centerHorizontal="false"
app:srcCompat="@drawable/shop_sample" />
<TextView
android:id="@+id/basket_item_list_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginEnd="10dp"
android:layout_marginRight="10dp"
android:gravity="center_vertical"
android:text="1€"
android:textColor="@android:color/black"
android:textSize="14sp"
tools:layout_editor_absoluteX="158dp"
tools:layout_editor_absoluteY="37dp" />
<TextView
android:id="@+id/basket_item_list_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="false"
android:layout_alignParentRight="false"
android:layout_centerVertical="true"
android:layout_marginEnd="2dp"
android:layout_marginRight="2dp"
android:layout_toLeftOf="@+id/basket_item_list_price"
android:layout_toStartOf="@+id/basket_item_list_price"
android:gravity="center_vertical"
android:text="nx"
android:textColor="@android:color/black"
android:textSize="14sp"
android:visibility="gone"
tools:layout_editor_absoluteX="158dp"
tools:layout_editor_absoluteY="37dp" />
</RelativeLayout>
答案 0 :(得分:1)
尝试下面的代码,这里我说的是LinearLayout
作为父级,其中所有布局都是LinearLayout
。您可以根据需要更改weight
。
结构:
<LinearLayout>
<LinearLayout> //weight
<ImageView>
<TextView>
</LinearLayout>
<LinearLayout>//weight
//all Buttons
</LinearLayout>
<LinearLayout>
以下是完整代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/item_list_item"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<LinearLayout
android:layout_weight="1"
android:id="@+id/basket_item_list_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/basket_item_list_image"
android:layout_width="50dp"
android:layout_height="50dp"
app:srcCompat="@mipmap/ic_launcher" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/basket_item_list_itemname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="false"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_toEndOf="@+id/basket_item_list_image"
android:layout_toRightOf="@+id/basket_item_list_image"
android:text="Item"
android:textColor="@android:color/black"
android:textSize="24sp"
tools:layout_editor_absoluteX="158dp"
tools:layout_editor_absoluteY="37dp" />
<TextView
android:id="@+id/basket_item_list_options"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:text="Options" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:gravity="right"
android:layout_weight="1.2"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/basket_item_list_increment"
android:layout_width="35dp"
android:layout_height="35dp"
android:minWidth="1dp"
android:text="+" />
<Button
android:id="@+id/basket_item_list_decrement"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:text="-" />
<ImageButton
android:id="@+id/basket_item_list_delete"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:text="-"
app:srcCompat="@mipmap/ic_launcher" />
<TextView
android:id="@+id/basket_item_list_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:layout_marginRight="10dp"
android:gravity="center_vertical"
android:text="1€"
android:textColor="@android:color/black"
android:textSize="14sp"
tools:layout_editor_absoluteX="158dp"
tools:layout_editor_absoluteY="37dp" />
<TextView
android:id="@+id/basket_item_list_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="2dp"
android:layout_marginRight="2dp"
android:gravity="center_vertical"
android:text="nx"
android:textColor="@android:color/black"
android:textSize="14sp"
android:visibility="visible"
tools:layout_editor_absoluteX="158dp"
tools:layout_editor_absoluteY="37dp" />
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
您可以使用weightSum
的{{1}}属性在视图之间平均分配可用空间。请参阅下面的示例代码,ragards。
我已经把weightSum = 10变量,你可以按照你的要求放置并分配给子视图,这将占用空间wrt to weightSum百分比
LinearLayout
答案 2 :(得分:0)
这样做肯定有助于你: -
<LinearLayout
android:id="@+id/basket_item_list_description"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/basket_item_list_image"
android:layout_toRightOf="@+id/basket_item_list_image"
android:orientation="vertical">
<TextView
android:id="@+id/basket_item_list_itemname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="false"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_toEndOf="@+id/basket_item_list_image"
android:layout_toRightOf="@+id/basket_item_list_image"
android:text="ItemName"
android:textColor="@android:color/black"
android:textSize="24sp"
tools:layout_editor_absoluteX="158dp"
tools:layout_editor_absoluteY="37dp" />
<TextView
android:id="@+id/basket_item_list_options"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:text="Options"
/>
</LinearLayout>
答案 3 :(得分:0)
使用weightSum概念可获得更好的效果。首先将它作为两个单独的布局,一个用于描述&amp;另一个是三个按钮。现在将具有这两个布局的一个父布局作为子布局,并使用一些相应的布局权重。父布局应该是两个子个体权重的总和。
对于参考:https://www.linkedin.com/pulse/android-layout-weight-weightsum-ramasamy-kasiviswanathan/
答案 4 :(得分:0)
我建议您在weight
上使用Views
参数。那么你的行元素将是固定大小,而不是你应该在TextView
上使用水平滚动。
使用weight
:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:scrollHorizontally="true"
android:maxLines="1"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:scrollHorizontally="true"
android:maxLines="1"/>
</LinearLayout>
</LinearLayout>
您应该在应该是某些对象的行中插入另一个LinearLayout
( f.e。buttons,images ... )。 android:scrollHorizontally="true"
和android:scrollHorizontally="true"
TextView
参数表示文字仅以固定尺寸显示TextView
,如果文字的文字非常长,则不会覆盖其他视图。
请注意,父版面宽度不能为wrap_content
。