我想在我的应用中使用scrollview。我试图在scrollview中添加一个文本视图,但除了滚动视图的背景颜色外,我看不到任何渲染的内容。
这是我的表现:
public class MyView extends ViewGroup
{
ScrollView myScrollview;
Textview tv;
public MyView(Context context) {
myScrollView = new ScrollView(context);
myScrollView.setBackgroundColor(0xfff00fff);
textview=new TextView(context);
textview.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
textview.setLayoutParams(params)
textview.setText("sadfasdfasdfasdfasdfasdfasdfsadfsadf");
textview.layout(0, 0, 1000, 2000);
textview.setHeight(5000);
textview.setWidth(3200);
myScrollView .addView(tv);
addView(myScrollview);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// TODO Auto-generated method stub
int width = r-l;
int height =b-t;
myScrollView .layout(0, 0, width, height-100);
}
}
我发现几乎所有的scrollview教程都使用xml来定义视图。但我想以程序化的方式做到这一点。但无论如何,我也试过xml。
我从这里复制了Romain Guy的xml进行测试:http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/
xml scrollview本身是正确的,如果我创建此scrollview并将其添加到活动中,使用
scrollview= (ScrollView) getLayoutInflater().inflate(R.layout.scrollviewid,null);
的setContentView(滚动视图);
或setContentView(R.layout.scrollviewid);
它奏效了。但是,如果我想让scrollview成为其他视图的子视图,我再次只能看到scrollview的背景。内部没有任何内容呈现:
public class MyView extends ViewGroup
{
ScrollView myScrollview;
public MyView(Activity activity,Context context)
{
super(context);
myScrollview= (ScrollView) activity.getLayoutInflater().inflate(R.layout.restaurantcategoryselectorviewlayout,null);
myScrollview.setBackgroundColor(0xfff00fff);
addView(myScrollview);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// TODO Auto-generated method stub
int width = r-l;
int height =b-t;
myScrollview.layout(0, 0, width, height-100);
}
}
我的代码出了什么问题?是否有任何使用程序而不是xml创建scrollview的示例?
另外,android的那些java源代码也在kernel.org吗?由于git服务已关闭,我在哪里可以下载android源代码?
答案 0 :(得分:3)
如果您以编程方式在其中创建ScrollView
,则需要创建View
,然后在ScrollView
内添加View
。
LinearLayout maincontainer = (LinearLayout) findViewById(R.id.weatherInfo);
maincontainer.setOrientation(LinearLayout.HORIZONTAL);
final HorizontalScrollView scrollView = new HorizontalScrollView(getApplicationContext());
maincontainer.addView(scrollView);
final LinearLayout linearLayout = new LinearLayout(getApplicationContext());
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
scrollView.addView(linearLayout);
答案 1 :(得分:1)
我不清楚你的ViewGroup有什么问题,但这似乎是问题所在。如果我接受你的代码,调试它(上面发布的代码有几个错误),并将它放入一个简单活动的开始代码,它将按预期工作。它会使用您的测试文本创建一个滚动文本区域。
这是代码。请注意,它希望布局文件包含一个标识为linearLayout1
的简单线性布局:
public class ListTestActivity extends Activity {
LinearLayout layout;
ScrollView myScrollView;
TextView textview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
layout = (LinearLayout) this.findViewById(R.id.linearLayout1);
myScrollView = new ScrollView(this);
myScrollView.setBackgroundColor(0xfff00fff);
myScrollView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
textview = new TextView(this);
textview.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
textview.setText("sadfasdfasdfasdfasdfasd fasdfsadfsadf");
myScrollView.addView(textview);
layout.addView(myScrollView);
}}