gpt4 book ai didi

android - Layouttrouble extending tablerow 和膨胀 xml tablerow

转载 作者:行者123 更新时间:2023-11-29 13:59:31 25 4
gpt4 key购买 nike

我非常接近选择 LinearLayout 替代方案,但没有正确处理这件事有点令人恼火。为了获得最大的灵 active ,我定义了一个只定义了行标题的 TableLayout xml。接下来,我生成了一个单独的 TableRow xml 来定义“行模板”。在 Javacode 中,我对 TableRow 进行了子类化,在构造函数中,我扩展了 tablerow 模板以附加到根(子类)。

嗯,到目前为止还不错。当表格被填充时,标题行是好的,但其他行不是。看起来它们的布局方式不同,两列没有按预期填满整个宽度,因此列之间没有正确对齐。

任何人都可以阐明这一点?我尝试了很多解决方案,但没有任何解决方案。

带标题行的表格布局

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >

<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true" >

<TableLayout
android:id="@+id/zone_table"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stretchColumns="*" >

<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:clipToPadding="false" >

<TextView
android:layout_width="0dip"
android:layout_weight="0.8"
android:background="#ffcccccc"
android:text="Zonename"
android:textColor="@android:color/black" />

<TextView
android:layout_width="0dip"
android:layout_weight="0.2"
android:background="#ffcccc00"
android:gravity="right"
android:text="Antall"
android:textColor="@android:color/black" />
</TableRow>
</TableLayout>
</HorizontalScrollView>

</ScrollView>

“其他”膨胀行

    <TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/zonetablerow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>

<TextView
android:id="@+id/zonerow_name"
android:layout_width="0dip"
android:layout_weight="0.8"
android:background="#ffcccccc"
android:textSize="18dp" />

<TextView
android:id="@+id/zonerow_invcount"
android:layout_width="0dip"
android:layout_gravity="right"
android:layout_weight="0.2"
android:background="#ffcccc00"
android:textSize="18dp" />

</TableRow>

类扩展 TableRow

    public class ZoneRow extends TableRow {
private ZoneInventoryDAO dao = null;
private int inventoryCount = 0;

public ZoneRow(Context ctx, ZoneInventoryDAO dao) {
this(ctx, dao, 0);
}

public ZoneRow(Context ctx, ZoneInventoryDAO dao, int inventoryCount) {
super(ctx);
setWeightSum(1.0f);
this.dao = dao;
this.inventoryCount = inventoryCount;
doLayout();
}

private void doLayout() {
// XML layouten settes med zonerow som parent (se:
// http://developer.android.com/resources/articles/layout-tricks-merge.html)
View v = LayoutInflater.from(getContext()).inflate(R.layout.zonerow,
this, true);
TextView t = (TextView) findViewById(R.id.zonerow_name);
TextView cnt = (TextView) findViewById(R.id.zonerow_invcount);

t.setText(dao.getZoneAlias());
cnt.setText(String.valueOf(inventoryCount));

}

public void incInventory() {
inventoryCount++;
}

public ZoneInventoryDAO getDAO() {
return dao;
}

}

最佳答案

看起来您正在扩展 tablerow 并创建该对象的实例。这将导致创建一个表行。然后你正在膨胀另一个 tablerow,由于某种原因与第一个交互。为了快速解决问题,请尝试添加类似 table.setColumnStretchable(0, true); 的内容;

关于android - Layouttrouble extending tablerow 和膨胀 xml tablerow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10170447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com