LinearLayout中动态添加View的布局问题

Bllose 发布于 2014/02/25 17:09
阅读 16K+
收藏 0

华为云11月刊推送:DIY微信问答机器人,高性能计算代码的20个技巧!>>>

我在建立ExpandableList的时候,子项需要显示一个名字和几个图片,比如下面一张图:

下面是我定义子项布局的一段代码:

LinearLayout ll = new LinearLayout(context);
ll.setOrientation(0);

        TextView textView = getTextView();
        //textView.setMaxWidth(350);
        textView.setText(currectType);

        ll.addView(textView);
        ll.addView(promotions);//promotions是我定义好的一个imageView

如果我将textView设置宽度 350,界面就变成下面样子:

现在我想要保证文字的完整的同时让图片靠近文字。应该如何实现捏?


加载中
0
岚风暴

引用来自“岚风暴”的答案

你这个应该是子视图的高度给固定了,所以文字不完整.  不过要实现你说的那种,子项中可以这样

<LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="left|center_vertical"
            android:orientation="horizontal"
            android:paddingLeft="16dp" >


            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:lines="1"
                android:maxWidth="80dp"
                android:text="MediumTextadsfasdfasdfasdfasdfasdfasdfasdfasdf"
                android:textAppearance="?android:attr/textAppearanceMedium" />


            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/attention_btn" />
        </LinearLayout>

当然你也可以用相对布局做,限制下Textview的最大行数、宽度 ,把图片定位到它右边即可

首先你又要限定TexeView的宽度,又要尽量显示完整内容,还不要换行,那你只能把字体变小了.
你说的要图片挨在文字右边,还是一样的, 用相对布局是最直接的.
或者在我给出的代码中,LinearLayout内,ImageView后面加一个
<View
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1" />


效果就是用一个空白视图填充图片右边, 也就能让图片与左边文字挨一起了
B
Bllose
多谢了,我弄明白了
0
岚风暴

你这个应该是子视图的高度给固定了,所以文字不完整.  不过要实现你说的那种,子项中可以这样

<LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="left|center_vertical"
            android:orientation="horizontal"
            android:paddingLeft="16dp" >


            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:lines="1"
                android:maxWidth="80dp"
                android:text="MediumTextadsfasdfasdfasdfasdfasdfasdfasdfasdf"
                android:textAppearance="?android:attr/textAppearanceMedium" />


            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/attention_btn" />
        </LinearLayout>

当然你也可以用相对布局做,限制下Textview的最大行数、宽度 ,把图片定位到它右边即可

B
Bllose
我可能没表达清楚。我用了textview的 maxwidth方法,限制了长度,但是就变成文字挤在一起了。我想实现: 剪魔勇 (图片) 这种格式,也就是图片离文字很近。现在文字和图片中间的间隔没办法缩短。
0
oldfeel
oldfeel

android可以在view中文字的上下左右设置背景图片,贴出java代码或者xml设置的格式

testview.setCompoundDrawables(null, null, null, getResources().getDrawable(R.drawable.icon));



android:drawableRight



返回顶部
顶部