Android动态视图

时间:2018-03-12 05:17:57

标签: android

我有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) 

4 个答案:

答案 0 :(得分:2)

我认为您需要在水平线性布局下面再添加一个线性布局,并且如果宽度大于所需的两个按钮空间则需要检查文本大小运行时间然后需要隐藏水平线性布局按钮并且需要显示下面的布局按钮

引用如何检查文本大小运行时参考下面的链接:

Refer this link

答案 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视图上放置红色标记,我们可以告诉最终用户。提供的文字很宽