以编程方式动态 textview 的文本更改布局中的其他视图,我不希望它

Posted

技术标签:

【中文标题】以编程方式动态 textview 的文本更改布局中的其他视图,我不希望它【英文标题】:Programmatically dynamic textview's text changes other views in layout, I don't want it to 【发布时间】:2015-05-11 23:39:15 【问题描述】:

所以我有一个带有relativelayout 的xml 布局文件,其中有几个按钮(其中8 个位于线性布局中)。在此布局顶部锚定的是textview。当您单击我以编程方式设置的按钮时,此文本视图中的文本会更改,但是当文本更改时,它会重新排列整个布局,这对用户来说太多了。我知道这是因为我的 textview 设置为 wrap_content 但这是我可以考虑多个屏幕的最佳方式。

有什么方法可以设置布局,这样当textview 更改文本数量时,它不会改变布局的其余部分,并且仍然足够动态以适应安卓用户的所有屏幕尺寸?

这是我的布局,非常感谢您的帮助!!!!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/RelativeLayout1"
android:layout_
android:layout_
android:orientation="vertical"
tools:context="$relativePackage.$activityClass" >

<TextView
    android:id="@+id/titleText"
    android:layout_
    android:layout_
    android:layout_alignParentTop="true"
    android:layout_marginTop="15dp"
    android:layout_marginBottom="15dp"
    android:gravity="center"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:text="Here is a really long sentance about some ish so that i can see exactly How  Much till it g"
    android:textAllCaps="true" />

<LinearLayout
    android:orientation="vertical"
    android:layout_
    android:layout_
    android:layout_centerInParent="true"
    android:layout_centerVertical="true">

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_
        android:layout_
        android:weightSum="2"
        android:layout_centerInParent="true"
        android:layout_below="@+id/titleText">

        <Button
            android:id="@+id/IdentityButton"
            android:layout_
            android:layout_weight="1"
            android:layout_
            android:text="@string/List_Identity" />

        <Button
            android:id="@+id/ConnectionsButton"
            android:layout_
            android:layout_weight="1"
            android:layout_
            android:text="@string/List_Connections" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_
        android:layout_
        android:layout_centerInParent="true"
        android:layout_marginTop="5dp"
        android:weightSum="2"
        android:layout_below="@+id/tableRow1" >

        <Button
            android:id="@+id/ResourcesButton"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:text="@string/List_Resources" />

        <Button
            android:id="@+id/SkillsButton"
            android:layout_
            android:layout_weight="1"
            android:layout_
            android:text="@string/List_Skills" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow3"
        android:layout_
        android:layout_
        android:layout_centerInParent="true"
        android:layout_marginTop="5dp"
        android:weightSum="2"
        android:layout_below="@+id/tableRow2" >

        <Button
            android:id="@+id/InterestsButton"
            android:layout_
            android:layout_weight="1"
            android:layout_
            android:text="@string/List_Interests" />

        <Button
            android:id="@+id/ResponsibilitiesButton"
           android:layout_
            android:layout_weight="1"
            android:layout_
            android:text="@string/List_Responsibilities" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow4"
        android:layout_
        android:layout_
        android:layout_centerInParent="true"
        android:layout_marginTop="5dp"
        android:weightSum="2"
        android:layout_below="@+id/tableRow3" >

        <Button
            android:id="@+id/BeliefsButton"
            android:layout_
            android:layout_weight="1"
            android:layout_
            android:text="@string/List_Beliefs" />

        <Button
            android:id="@+id/DirectionButton"
            android:layout_
            android:layout_weight="1"
            android:layout_
            android:text="@string/List_Direction" />
    </TableRow>
</LinearLayout>

<Button
    android:id="@+id/ListNext"
    android:layout_
    android:layout_
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:text="Next" />

<ImageButton
    android:contentDescription="@string/WhereHelpContentDesc"
    android:id="@+id/ListHelpButton"
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentBottom="true"
    android:src="@android:drawable/btn_star" />

【问题讨论】:

【参考方案1】:

因此,在这种情况下,从用户体验的角度来看,我什至无法想象这在视觉上会如何工作。

我认为你可以在这里做的最好的事情是让 textview 在达到其边界时缩小(只是文本,而不是整个视图)。

尝试使用这个 textview 来实现这一点并告诉我:

https://***.com/a/5535672/1154026

【讨论】:

我认为这是一个很长的镜头,无论如何感谢您的帮助!我最终解决了这个问题,只需制作所有将 textview 更改为大约相同数量的单词的字符串。它的贫民区,但嘿,它完成了工作....我希望 试试我发布的那个!它很容易实现,看起来会更好。相信我:)

以上是关于以编程方式动态 textview 的文本更改布局中的其他视图,我不希望它的主要内容,如果未能解决你的问题,请参考以下文章

多个时如何以编程方式访问相对布局中的文本视图或进度条?

以编程方式更改约束布局中的高度?

以编程方式设置 TextView 的布局权重

如何动态更改多个TextView中的文本? [重复]

以编程方式设置TextView的布局权重

当以编程方式完成时,视图不会反映任何变化