我有TextView
,在Buttons
旁边显示错误消息。它们目前位于水平LinearLayout
内。问题是如果TextView
太宽,2 Buttons
将被推离屏幕。在这种情况下是否可以向下推动元素?
如果文字很短,则没有问题:
(Textview text) (Button1) (Button2)|(Edge of screen)
如果textview很长,我想将2个按钮按下" row"
(Realllllllllllly long text that may|(Edge of screen)
span 2 lines)
(Button1) (Button2)|(Edge of screen)
答案 0 :(得分:2)
我认为您需要在水平线性布局下面再添加一个线性布局,并且如果宽度大于所需的两个按钮空间则需要检查文本大小运行时间然后需要隐藏水平线性布局按钮并且需要显示下面的布局按钮
引用如何检查文本大小运行时参考下面的链接:
答案 1 :(得分:1)
是的,你可以做到这一点,flexbox-layout是解决方案。
如何使用
Gradle依赖
dependencies {
implementation 'com.google.android:flexbox:0.3.2'
}
和xml代码
<com.google.android.flexbox.FlexboxLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:flexWrap="wrap"
app:alignItems="stretch"
app:alignContent="stretch" >
<TextView
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_alignSelf="flex_end"
/>
</com.google.android.flexbox.FlexboxLayout>
还有一些其他属性[read documentation],您可以尝试找到更合适的属性。
答案 2 :(得分:1)
尝试这种方式:使用FlowLayout
<org.apmem.tools.layouts.FlowLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</org.apmem.tools.layouts.FlowLayout>
在FlowLayout内部,你可以放置你的视图,如果不合适,它会自动移动到下一行。
答案 3 :(得分:0)
您可以使用TextView预定义方法,为此最终用户提供验证
TextView textView=(TextView)findViewById(R.id.text_view);
textView.setError("Your Text is very wide please provide short text");
setError在textview视图上放置红色标记,我们可以告诉最终用户。提供的文字很宽