我正在尝试创建一个活动,其中几个文本框排列在两列中。我这两列的宽度是屏幕的30%,另一列是剩余的70%。这是我的XML代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_marginTop="3dp"
android:layout_weight="1"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="2dp"
android:layout_weight="0.3"
android:background="@drawable/gradient_bg_hover"
android:gravity="center_vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="naming is fun fun is naming" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_weight="0.7"
android:background="@drawable/gradient_bg_hover"
android:gravity="center_vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hi" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_marginTop="3dp"
android:layout_weight="1"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="2dp"
android:layout_weight="0.3"
android:gravity="center_vertical"
android:background="@drawable/gradient_bg_right" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hi" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_weight="0.7"
android:gravity="center_vertical"
android:background="@drawable/gradient_bg_right" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hi" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
问题是带有文字“hi”的栏占据了屏幕的30%,但像“hello”这样的词占用的空间更多,而且形成失真。
无论文本大小如何,都应该占据屏幕的最大值的30%。任何帮助表示赞赏。
答案 0 :(得分:0)
包含textview的线性布局的layout_width应为0 dp
使用 -
android:layout_width="0dp"
而不是使用 -
android:layout_width="wrap_content"
因为在定义权重时,您无需定义宽度。 Weigths将自动处理宽度。
看看这是否有帮助。
编辑 - 这个xml应该可以正常工作 -
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_marginTop="3dp"
android:layout_weight="1"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginRight="2dp"
android:layout_weight="0.3"
android:background="@android:color/background_dark"
android:gravity="center_vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="naming is fun fun is naming" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="0.7"
android:background="@android:color/background_light"
android:gravity="center_vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hi" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_marginTop="3dp"
android:layout_weight="1"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginRight="2dp"
android:layout_weight="0.3"
android:gravity="center_vertical"
android:background="@android:color/background_dark" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hi" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="0.7"
android:gravity="center_vertical"
android:background="@android:color/background_light" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hi" />
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
您应该考虑表格视图,以便在那里指定layout_wieght。
如果您使用layout_wieght,则将textviews的宽度设置为fill_parent,因为它是为其分配的空间。
使用为textview启用的单行,如果需要,可以选中文本。
编辑
因为这个而无法正常工作
<LinearLayout
android:layout_width="wrap_content" //wrap_content
android:layout_height="match_parent"
android:layout_marginRight="2dp"
android:layout_weight="0.3"
android:gravity="center_vertical"
android:background="@drawable/gradient_bg_right" >
<TextView
android:layout_width="wrap_content"//wrap_content
android:layout_height="wrap_content"
android:text="Hi" />
</LinearLayout>
您没有将分配的空间分配给textview
答案 2 :(得分:0)
尝试将此用于TextView。如果这没有解决它,请尝试根据您的情况增加或减少值而不是3
android:ems = "3"
答案 3 :(得分:0)
如果使用layout_gravity,则将相应的高度/宽度设置为0.此外,我发现没有理由使用额外的嵌套线性布局。也许你可以使用这样的东西。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_marginTop="3dp"
android:orientation="horizontal" >
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
android:layout_weight="0.3"
android:text="Hi" />
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:text="Hi" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_marginTop="3dp"
android:orientation="horizontal" >
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
android:layout_weight="0.3"
android:text="Hi" />
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:text="Hi" />
</LinearLayout>
</LinearLayout>