TableLayout中的TableRow超出屏幕范围的内容

3
这个问题很简单,我认为。
问题在于:我的TextView(位于TableRow中,而该TableRow又位于TableLayout中)超出了可见屏幕。
截图可以澄清: yep 我尝试过了。
        tvValue.setLinksClickable(true);
        tvValue.setEllipsize(TruncateAt.MIDDLE);

1) 不会进行截断处理。 2) 显然,它们显示了链接,但是它们不能被点击!

由于这是一个高度动态的事情,我需要在代码中进行所有初始化。 因此,这是代码:

public class StartUp extends Activity {

private TableLayout mTableLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final Context appContext = getApplicationContext();

    mTableLayout = new TableLayout(appContext);
    mTableLayout.setBackgroundColor(0xffffffff);

    String[] h = new String[] { "email", "facebook", "youtube" };
    String[] v = new String[] { "lol@xd.de", "http://www.facebook.com/010101010101010", "http://www.youtube.com/lalala" };

    LayoutParams rowLayoutParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);

    for (int i = 0; i < h.length; ++i) {
        TableRow row = new TableRow(appContext);
        row.setLayoutParams(rowLayoutParams);

        TextView tvHead = new TextView(appContext);
        tvHead.setTextColor(0xff336699);
        tvHead.setPadding(0, 0, 10, 0);
        tvHead.setText(h[i]);

        TextView tvValue = new TextView(appContext);
        tvValue.setTextColor(0xff191919);
        tvValue.setLinksClickable(true);
        tvValue.setText(v[i]);
        tvValue.setEllipsize(TruncateAt.MIDDLE);


        row.addView(tvHead);
        row.addView(tvValue);
        mTableLayout.addView(row);
    }

    setContentView(mTableLayout);

}

}


分享 XML 代码。另外,在 XML 布局本身中设置最大属性是一个好习惯。 - Shailendra Singh Rajawat
1
顺便提一下,如果您想让 "setEllipsize" 部分起作用,请不要忘记为 textView 请求焦点。它只有在视图具有焦点时才有效! - Entreco
@Entreco 这不是一个真正的问题吗?假设只有一个视图可以拥有焦点,如果大约有5个TextView需要省略号,则怎么办? - poitroae
你可以将这5个视图放在一个ViewGroup中,并为ViewGroup请求焦点。然后,您需要确保焦点传递到ViewGroup的子项。 - Entreco
1个回答

4

在setContentView(...)之前添加一个简单的mTableLayout.setColumnShrinkable(1, true);就可以完成任务了。谢谢! - poitroae

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