Android布局令人困惑

12 浏览
0 Comments

Android布局令人困惑

这是我的截图:

enter image description here

这是我的代码:

android:id="@+id/wrapper"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:gravity="left">

android:id="@+id/timeIn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_toRightOf="@+id/messageIn"

android:layout_gravity="center"

android:layout_marginTop="15dip"

android:text="23:23"/>

android:id="@+id/messageIn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:layout_margin="5dip"

android:background="@drawable/bubble_yellow"

android:paddingLeft="10dip"

android:text="HIHIHIHIHIHI" />

然而,如果文本"HIHIHIHIHIHI"变成"HIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHI":

时间会消失,气泡会填满父容器

enter image description here

我该如何使时间仍然在气泡右侧,即使文本是多行的?

0
0 Comments

问题出现的原因:在第一个布局中,当文本内容较长时,消息气泡会填充整个宽度,而当文本内容较短时,消息气泡会留下许多空白区域。而在第二个布局中,虽然能够适应长文本,但在短文本情况下仍存在两个文本视图之间的间隙。

解决方法:通过使用 weightSum 和 layout_weight 属性来解决问题。在第二个布局中,将 weightSum 设置为1.0,然后在两个 LinearLayout 中分别设置 layout_weight 属性为1.0和0.1。这样可以使得消息视图和时间视图占用不同比例的宽度,从而实现长文本和短文本的适配。

0
0 Comments

在Android布局中,有一个常见的问题是关于文本视图的最大宽度的设置。尽管有一些解决方法被提出,但唯一且最好的解决方法是使用android:maxwidth属性。

出现这个问题的原因可能是在布局中没有正确设置文本视图的最大宽度,导致文本内容过长时超出了视图的边界。这可能会导致布局混乱和不可读的界面。

为了解决这个问题,我们可以在文本视图中添加android:maxwidth属性。这个属性可以限制文本视图的最大宽度,确保文本内容适应布局并不会超出边界。

以下是一个示例代码,展示了如何使用android:maxwidth属性来设置文本视图的最大宽度:


在上面的示例中,我们将文本视图的最大宽度限制为200dp。这意味着,无论文本内容多长,它都不会超过这个宽度,从而确保布局的整洁和可读性。

因此,使用android:maxwidth属性是解决Android布局混乱问题的最佳方法。只需要在相关的文本视图中添加这个属性,并根据需要设置最大宽度值,就可以有效地解决这个问题。

0
0 Comments

问题的原因是在Android布局中,"messageIn" TextView的宽度超出了屏幕的宽度,导致布局混乱。解决方法是通过设置"messageIn" TextView的android:maxWidth属性来限制其宽度。运行时,获取设备屏幕的宽度和"timeIn" TextView的宽度,然后通过调用TextView的setMaxWidth(int maxpixels)方法,将屏幕宽度减去"timeIn" TextView的宽度,得到的差值作为"messageIn" TextView的最大宽度。

具体实现步骤如下:

1. 获取设备屏幕的宽度,可以参考链接"See how to get screen size here"中的方法。

2. 获取"timeIn" TextView的宽度,可以参考链接"See how to get GUI object size here"中的方法。

3. 根据获取到的屏幕宽度和"timeIn" TextView的宽度计算出"messageIn" TextView的最大宽度,即屏幕宽度减去"timeIn" TextView的宽度。

4. 使用TextView的setMaxWidth(int maxpixels)方法将计算得到的最大宽度设置给"messageIn" TextView。

以下是示例代码:

TextView messageIn = (TextView) findViewById(R.id.messageIn);
TextView timeIn = (TextView) findViewById(R.id.timeIn);
// 获取"timeIn" TextView的宽度
int timeInW = timeIn.getMeasuredHeight();
// 获取设备屏幕的宽度
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screenWidth = size.x;
// 计算"messageIn" TextView的最大宽度
int maxWidth = screenWidth - timeInW;
// 设置"messageIn" TextView的最大宽度
messageIn.setMaxWidth(maxWidth);

如果你的开发目标是API<=13,则将获取屏幕宽度的代码替换为以下代码:

int screenWidth = display.getWidth();

0