我想在我的第一个活动的onCreate()方法中创建一个horizo​​ntalscrollview,因为我想进行大量的textview滚动。这是我到目前为止的内容:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.ViewGroup.LayoutParams;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity {

    LinearLayout linscrollview;
    HorizontalScrollView scrollview;

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

        scrollview = (HorizontalScrollView) findViewById(R.id.scrollview_layout);
        linscrollview = new LinearLayout(this);


        for(int i=0; i<5; i++) {
            TextView tv = new TextView(this);
            tv.setWidth(LayoutParams.WRAP_CONTENT);
            tv.setHeight(LayoutParams.WRAP_CONTENT);
            tv.setText("" + i);
            tv.setTextSize(20);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            params.setMargins(10, 0, 10, 0);
            tv.setLayoutParams(params);
            tv.setId(i);
            linscrollview.addView(tv);
        }


        scrollview.addView(linscrollview);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}


我没有收到任何错误,但是没有textviews显示出来。

最佳答案

您的问题可能与setWidth和setHeight方法有关。它们按照文档中的说明设置TextView宽度和高度的精确值(以像素为单位):


  使TextView恰好有这么多像素宽。你可以做
  通过在LayoutParams中指定此数字也可以实现相同目的。


http://developer.android.com/reference/android/widget/TextView.html#setWidth(int)

您想要做的是为TextView设置LayoutParams,因为您已经将代码稍微移了一些。因此,只需摆脱这两个方法调用,它就可以工作。

10-08 08:05