我有这个布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:id="@+id/root_ll"
android:orientation="vertical"
android:gravity="center_horizontal">
</LinearLayout>
</ScrollView>
下面这个代码隐藏,一切都生成完美但屏幕不可滚动,你能告诉我问题是什么吗?谢谢。
LinearLayout linearLayout= (LinearLayout) findViewById(R.id.root_ll);
for(int i = 0; i < 6 i++)
{
LinearLayout llInside= new LinearLayout(this);
llInside.setOrientation(LinearLayout.HORIZONTAL);
llInside.setLayoutParams(new AbsListView.LayoutParams(
AbsListView.LayoutParams.WRAP_CONTENT,
AbsListView.LayoutParams.WRAP_CONTENT));
WebView wView = new WebView(this);
TextView tvInside = new TextView(this);
wView.loadUrl("file:///android_asset/a.gif");
setContentView(wView);
tvInside.setText("A");
wView.setLayoutParams(new AbsListView.LayoutParams(
600,
600));
tvInside.setTextSize(TypedValue.COMPLEX_UNIT_SP, 74);
if(wView.getParent()!=null)
((ViewGroup)wView.getParent()).removeView(wView);
if(tvInside.getParent()!=null)
((ViewGroup)tvInside.getParent()).removeView(tvInside);
llInside.addView(wView);
llInside.addView(tvInside);
if(llInside.getParent()!=null)
((ViewGroup)llInside.getParent()).removeView(llInside);
linearLayout.addView(llInside);
// linearLayout.addView(wView);
//make visible to program
}
if(linearLayout.getParent()!=null)
((ViewGroup)linearLayout.getParent()).removeView(linearLayout);
setContentView(linearLayout);
答案 0 :(得分:3)
您对setContentView()
的来电是个问题。该方法设置Activity的布局。每当您的代码调用它时,它都会完全取代活动的内容,而您的ScrollView
早已不复存在。删除已发布代码中对setContentView()
的所有来电,以及以下内容:
if(linearLayout.getParent()!=null)
((ViewGroup)linearLayout.getParent()).removeView(linearLayout);
您还可以删除父View
对我们动态创建的View
的空检查,因为在您添加父项之前,他们不会有父母。< / p>
LinearLayout linearLayout= (LinearLayout) findViewById(R.id.root_ll);
for(int i = 0; i < 6; i++)
{
LinearLayout llInside= new LinearLayout(this);
llInside.setOrientation(LinearLayout.HORIZONTAL);
llInside.setLayoutParams(new AbsListView.LayoutParams(
AbsListView.LayoutParams.WRAP_CONTENT,
AbsListView.LayoutParams.WRAP_CONTENT));
WebView wView = new WebView(this);
TextView tvInside = new TextView(this);
wView.loadUrl("file:///android_asset/a.gif");
tvInside.setText("A");
wView.setLayoutParams(new AbsListView.LayoutParams(
600,
600));
tvInside.setTextSize(TypedValue.COMPLEX_UNIT_SP, 74);
llInside.addView(wView);
llInside.addView(tvInside);
linearLayout.addView(llInside);
}
答案 1 :(得分:2)
您已经使用:
android:layout_height="fill_parent";
ScrollView
使用:
android:layout_height="wrap_content";
然后它的工作。
答案 2 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:id="@+id/root_ll2"
android:gravity="center_horizontal">
<ScrollView
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:id="@+id/root_ll"
android:orientation="vertical"
android:gravity="center_horizontal">
your buttons ,etc...
</RelativeLayout>
答案 3 :(得分:0)
只需改变一点高度..只需将所有内容改为--------------------------
|if-x-value| x-new-value |
--------------------------
| 100 | 0 |
--------------------------
| 125 | 5 |
--------------------------
| 150 | 10 |
--------------------------
wrap_content
确保整个内容高度超过屏幕高度。
修改强>
由于WebViews是可滚动的。您只需使用<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/root_ll"
android:orientation="vertical"
android:gravity="center_horizontal">
</LinearLayout>
..此处无需使用ScrollView。
答案 4 :(得分:0)
试试这个,它正在运作
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/root_ll"
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView
android:id="@+id/txtHeaderTitle"
android:layout_width="wrap_content"
android:layout_height="1000dp"
android:text="Hello World"
android:textColor="@android:color/black"
android:textSize="20sp" />
</LinearLayout>
</ScrollView>