Android中的ImageView在TableRow中无法显示

4

我正在尝试在TableRow中显示一个简单的ImageView,但由于某种原因它无法显示。如果我将另一个控件添加到另一行,则ImageView会显示出来,因此似乎它只是没有正确强制大小。我的xml如下:

<TableLayout 
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_height="fill_parent" 
  android:layout_width="fill_parent"
 android:background="#4B088A"
  android:id="@+id/ImageTable">

 <TableRow android:layout_width="fill_parent" 
 android:layout_height="wrap_content"
 android:padding="5dp"
 android:id="@+id/ImageTableRow"/> 

  </TableLayout>

我正在使用的代码来添加ImageView如下:

TableLayout tableLayout = (TableLayout) findViewById(R.id.ImageTable);  

TableRow tr = new TableRow(this);

TableRow.LayoutParams lp = new 
        TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT ,TableRow.LayoutParams.WRAP_CONTENT);

tr.setLayoutParams(lp);

 m_imageView = new MyImageView(getApplicationContext());

 m_imageView.setBackgroundColor(Color.GRAY);

 m_imageView.setImageBitmap(charty);

 tr.addView(m_imageView);

 tableLayout.addView(tr);

你需要使用Java代码添加图像还是使用XML也可以吗?并且在声明m_imageView时要注意。 - Sumedh Tambat
@Sumedh Tambat,我也尝试通过XML添加ImageView,但除非表格中还有其他控件,否则ImageView不会显示。我是Android的新手,可能是因为我对TableLayout的工作原理理解不够。 - user1145533
1个回答

4
尝试这段代码:
将你的 xml "activity_main" 写成以下形式:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
     >


    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         >
<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_action_search" />
</TableRow>
</TableLayout>

</LinearLayout>

ic_action_search是你在drawable文件夹中的图片,将主activity编写为:

public class MainActivity extends Activity 
{

ImageView image;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 }
} 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接