3行のテーブルを表示しようとしています。最初の2つは画像で、3つ目はデータです。私は45%、45%、10%のテーブル行の重みでそれらを設定しようとしました...しかし、それは決して起こりません、それはいつも約47%、47%、6%のどこかで出ます。Android:異なるサイズのテーブルの同じ画像 - デバッグしないときのみ
しかし、それは私が把握できない振る舞いに比べて小さいです。
画像とデータは非同期であるため、「実行可能」を使用してデータが入力されます。 問題は、が更新されるたびに、最初のイメージが大きくなってになります。そして第2のイメージは小さくなっていく。 しかし、ここではキッカーがあります。ブレークポイントを設定してデバッグするために一時停止すると、私が望むのとまったく同じように動作します。サイズは変わらず、行の高さは変わりません。
だから、それは言った、ここに私のレイアウトXMLは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:layout_weight="1"
android:id="@+id/mainscreen">
android:background="#00ff00"
<TableRow
android:layout_width="fill_parent"
android:layout_height="0dp"
android:id="@+id/img1box"
android:layout_weight="45"
android:gravity="center_vertical|center_horizontal">
<ImageView
android:contentDescription="image1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/img1"
android:src="@drawable/icon"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="0dp"
android:id="@+id/img2box"
android:layout_weight="45"
android:gravity="center_vertical|center_horizontal">
<ImageView
android:contentDescription="image2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img2"
android:src="@drawable/icon" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="10"
android:id="@+id/dataholder"
android:gravity="center_vertical|center_horizontal">
<TextView
android:id="@+id/statusbox"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:textColor="#000000"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_gravity="center"/>
</TableRow>
</TableLayout>
私は、このような0dp(または0PX)、fill_parent、match_parent、wrap_content、ウェブ検索からのダース他の構成などの設定を試してみました。データは/画像が掲載されている場合に発生
とコードスニペットは、(のonCreate()で発生し、正常に動作しますfindViewById()、のようなものを行う部品を取り外し、プラスいくつかの機密変数の名前を変更):final Runnable HandleImage1Ready = new Runnable() {
@Override
public void run() {
int height, width;
float xfactor, yfactor;
height = m_Image1Box.getHeight(); // This is the TableRow
width = m_Image1Box.getWidth();
// Compute the reduction factor, but it's
// always by height right now, so we just use that
Bitmap image = BitmapFactory.decodeByteArray(m_img1, 0, m_img1.length);
yfactor = height/(float) image.getHeight();
xfactor = width/(float) image.getWidth();
// create a new bitmap, I even try reducing the "height"
// to prevent the table row from growing... doesn't help
Bitmap scaled = Bitmap.createScaledBitmap(image, (int) (image.getWidth() * yfactor), height, true);
m_Image1.setImageBitmap(scaled);
CompleteProcessing();
}
};
final Runnable HandleImage2Ready = new Runnable() {
@Override
public void run() {
int height, width;
float xfactor, yfactor;
height = m_Image2Box.getHeight(); // This is the TableRow
width = m_Image2Box.getWidth();
// EVEN TRY USING THE SAME IMAGE ON ROW 2...
//Bitmap image = BitmapFactory.decodeByteArray(m_img2, 0, m_img2.length);
Bitmap image = BitmapFactory.decodeByteArray(m_img1, 0, m_img1.length);
yfactor = height/(float) image.getHeight();
xfactor = width/(float) image.getWidth();
Bitmap scaled = Bitmap.createScaledBitmap(image, (int) (image.getWidth() * yfactor), height, true);
m_Image2.setImageBitmap(scaled);
CompleteProcessing();
}
};
final Runnable HandleMicrReady = new Runnable() {
@Override
public void run() {
int height, width;
// Just to debug these, and see how this row changes
height = m_statusBox.getHeight();
width = m_statusBox.getWidth();
m_statusBox.setText(m_data);
CompleteProcessing();
}
};
繰り返し...上記の関数のいずれかにブレークポイントを設定して実行を再開すると、新しい画像を投稿するたびに、両方の画像が同じサイズになります。それは私が起こりたいものです。
ただし、ブレークポイントを設定しないと、新しいイメージがポストされるたびに、一番上のテーブルの行が大きくなります。トップイメージがテーブル(スクリーン)の50%を超え、下部のイメージとテーブル行のデータが小さくなっています。
本質的に誰かが問題のために見ているとき、あなたが取る車の中でガラガラのように、それはそれをしない、ので、私はAndroidのメーカーは私を笑っていると信じて...
(私は含ま"アンドロイドスタジオ"タグは、ASデバッガで一時停止すると消えてしまうので)。
アドバイスありがとうございます。
-Scotty
これがうまく働きました。また、ビットマップを拡大縮小する必要もなくなりました。画像は、LinearLayout IDの高さに自動的に調整されているようです。ありがとう。 – SpacemanScott