我正在尝试构建一个UI,其中我有一个已在XML中定义的线性布局。
根据用户的输入,我需要在此线性布局中添加一些TextView。我能做到这一点。
我的实际问题是,当我有更多文字视图时,它们彼此相邻堆叠,一些文本视图文本被隐藏或垂直拉伸,如下图所示。
我想使用线性布局的整个宽度,如果文本视图不适合这一行,它应该放在新行或第一个文本视图下面..我希望显示为如下。
以下是我在XML中的线性布局配置:
<RelativeLayout
android:id="@+id/RL1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingBottom="5dip"
android:paddingTop="5dip" >
<TextView
android:id="@+id/text1"
android:layout_width="85dip"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:gravity="left"
android:text="Lable 1"
android:textColor="#999999" />
<LinearLayout
android:id="@+id/LL1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/button1"
android:layout_toRightOf="@+id/text1"
android:gravity="left|center_vertical"
android:orientation="horizontal"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:paddingTop="3dip" >
</LinearLayout>
<Button
android:id="@+id/button1"
android:layout_width="30dip"
android:layout_height="30dip"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginTop="2dip"
android:background="@drawable/plus"
android:clickable="true"
android:focusable="true"
android:paddingTop="5dip" />
</RelativeLayout>
任何人都可以帮助我如何在java代码中重新调整它。
答案 0 :(得分:1)
我想建议你如何在线性布局中为所有视图提供相同的大小,你可以通过在XML文件中使用权重属性来实现,即android:该特定视图的权重以及何时使用您应该给出width = 0dp或0dip的属性。我认为这样可以轻松解决您的问题。
我建议您首先在以下链接中充分了解如何使用此属性: - Weight property with an example
答案 1 :(得分:1)
请参阅:
How to wrap Image buttons in a horizontal linear layout?
How can I do something like a FlowLayout in Android?
您也可以搜索github FlowLayout.java
。
另一种方法是: Android - multi-line linear layout
此外,还有一个将图像添加到TextView中的类: https://stackoverflow.com/a/21250752/755804 这与在一般情况下包装视图不同,但有时可以完成工作。
答案 2 :(得分:0)
我是韩国人。 所以我的英语说得不好,但是我会帮你的。
首先,使用四个文本框创建“ item.xml”。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/set_checkbox"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text2"
android:text="0"
android:layout_weight="1"
android:gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text3"
android:text="0"
android:layout_weight="4"
android:gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text4"
android:text="0"
android:layout_weight="4"
android:gravity="center"/>
</LinearLayout>
第二步,创建“ main.xml”,其中将动态生成“ item.xml”。 “方向”有助于一次创建一行。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
最后,您可以使用以下代码在每行中创建四个TextView。
LinearLayout layout = (LinearLayout)findViewById(R.id.mainxml);
LinearLayout item = (LinearLayout)layout.inflate(this.getContext(), R.layout.itemxml, null);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT);
item.setLayoutParams(params);
CheckBox cb = item.findViewById(R.id.set_checkbox);
TextView text2 = item.findViewById(R.id.text2);
TextView text3 = item.findViewById(R.id.text3);
TextView text4 = item.findViewById(R.id.text4);
cb.setChecked(true);
text2.setText("text2");
text3.setText("text3");
text4.setText("text3");
layout.addView(item);
第10个循环如下图所示。 enter image description here