【问题标题】:How can I set Imageview and Textview on same line in LinearLayout如何在 LinearLayout 的同一行上设置 Imageview 和 Textview
【发布时间】:2015-04-27 22:31:55
【问题描述】:

我想在 LinearLayout 的同一行设置 Imageview 和 Textview 但 Imageview 总是高于 Textview。

这是我的代码:

String b[] = cacBuocThucHien.split("#");
for (int j = 0; j < b.length; j++) {
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    LinearLayout.LayoutParams lp2 = new LinearLayout.LayoutParams(30,30);
    lp.setMargins(50, 0, 0, 0);
    ImageView img = new ImageView(RecipesDetailActivity.this);
    TextView tv = new TextView(RecipesDetailActivity.this);
    img.setLayoutParams(lp2);
    img.setImageResource(R.mipmap.testic);
    tv.setLayoutParams(lp);
    tv.setText(b[j] + "\n");
    layoutHuongDan.addView(img);
    layoutHuongDan.addView(tv);
}

【问题讨论】:

标签: android android-linearlayout


【解决方案1】:

这个你可以用来将图像放在一行中.. 它适用于各种布局。希望对你有帮助

  <LinerLayout>     
   <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
  <TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
   ....... // Put how many TextViews you want

 <TextView
        android:id="@+id/textn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
 </LinerLayout>

如果您只想在设置文本后显示这些文本视图,则可以设置初始可见性消失。 现在在您的活动中创建一个这样的文本视图 ID 数组...

public static int[] textRows = {R.id.text1, R.id.text2, ........ R.id.textn};

然后使用 for 循环来初始化它们并像这样设置文本和图像

   TextView[] allTexts = new TextView[n];
   for (int i = 0; i < n; i++) {
        allTexts[i] = (TextView) findViewById(textRows[i]);
        allTexts[i].setText("your text");
        allTexts[i].setCompoundDrawables(left_image, null, null, null); 
    }

它会起作用的。试试看

【讨论】:

  • 感谢您的帮助,但我尝试了您的方法,但是这样图像视图消失了,我也无法添加多图像视图和文本视图。
  • 我想为每行添加一个文本和一个图像,因此我必须使用“for”循环创建文本和图像并使用线性布局。
  • 查看我的编辑,并检查它。它应该按要求工作。
  • 我从你那里学到了新东西,谢谢你的帮助。但这实际上不是我想要的,我只是想要一个小图标在textview的第一个字母前面。我该怎么做?
  • 这里。我想要这样的东西s16.postimg.org/m423udgmd/Untitled.png 但是按照你的指示,它会是这样的s11.postimg.org/g7al92eub/Untitled.jpg
【解决方案2】:

设置 textview drawable left 不需要额外的 imageview

android:drawableLeft="@drawable/img"

【讨论】:

    【解决方案3】:

    如果您只想在TextView 旁边显示一个图标,我认为您应该考虑使用drawable icon feature of TextView

    tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon, 0, 0, 0);
    

    但是如果你坚持使用两个并排的视图,在这种情况下使用layout gravity 会很有用。

    lp.gravity= Gravity.CENTER_VERTICAL;
    

    【讨论】:

    • 当我尝试第一种方法时,布局将是空白的。当我尝试第二种方法时,图标将位于 textview 的顶部。
    【解决方案4】:

    如果您只想显示 TextViewImageView.. 将 CompounDrawable 设置为 TextView 本身..

    但是,如果要以编程方式在 LinearLayout 中并排显示两个视图,请尝试设置 orientation=horizontal,请查看 this link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-22
      • 2016-07-27
      • 1970-01-01
      • 2014-10-15
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多