Android布局令人困惑
Android布局令人困惑
这是我的截图:
这是我的代码:
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":
时间会消失,气泡会填满父容器
我该如何使时间仍然在气泡右侧,即使文本是多行的?
在Android布局中,有一个常见的问题是关于文本视图的最大宽度的设置。尽管有一些解决方法被提出,但唯一且最好的解决方法是使用android:maxwidth属性。
出现这个问题的原因可能是在布局中没有正确设置文本视图的最大宽度,导致文本内容过长时超出了视图的边界。这可能会导致布局混乱和不可读的界面。
为了解决这个问题,我们可以在文本视图中添加android:maxwidth属性。这个属性可以限制文本视图的最大宽度,确保文本内容适应布局并不会超出边界。
以下是一个示例代码,展示了如何使用android:maxwidth属性来设置文本视图的最大宽度:
在上面的示例中,我们将文本视图的最大宽度限制为200dp。这意味着,无论文本内容多长,它都不会超过这个宽度,从而确保布局的整洁和可读性。
因此,使用android:maxwidth属性是解决Android布局混乱问题的最佳方法。只需要在相关的文本视图中添加这个属性,并根据需要设置最大宽度值,就可以有效地解决这个问题。
问题的原因是在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();