Невозможно прокрутить содержимое вкладки в производной деятельности Tabhost - PullRequest
1 голос
/ 25 ноября 2011

Я создал пример макета вкладки на сайте разработчиков Android Макет вкладки в Android 2.2. Хотя пример работает как рекламируется, я не могу прокручивать текстовые представления, которые я поместил в одно из действий. Объекты TextView были созданы динамически в данной деятельности, если это имеет значение. Я попытался обернуть различные части компонентов в main.xml с помощью ScrollView, но я либо получаю ошибку сборки, либо Force Close при запуске. Прикрепленный код, который реализует textViews и его XML, а также файл main.xml. Я не могу публиковать изображения, так как я новичок. Любые предложения с благодарностью.

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"    
    android:id="@android:id/tabhost"        
    android:layout_width="fill_parent"    
    android:layout_height="fill_parent">   
    <LinearLayout        
        android:orientation="vertical"                
        android:layout_width="fill_parent"        
        android:layout_height="fill_parent"        
        android:padding="5dp"> 

        <TabWidget            
            android:id="@android:id/tabs"            
            android:layout_width="fill_parent"            
            android:layout_height="wrap_content" />      
        <FrameLayout            
            android:id="@android:id/tabcontent"            
            android:layout_width="fill_parent"            
            android:layout_height="fill_parent" />             
     <!--         android:padding="5dp" --> 
    </LinearLayout>
</TabHost>

Источник, который создает мои TextViews на вкладке:

public class Activity2 extends Activity{    
    public void onCreate(Bundle savedInstanceState){        
        super.onCreate(savedInstanceState); 

        DisplayTexts(20);
    }

    private void DisplayTexts(int length){
        if(length == 0)
            return;

    LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);

    LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(LinearLayout.VERTICAL);         
    for(int i = 0; i < length; i++) 
    {
        TextView tv = new TextView(getApplicationContext());
        registerForContextMenu(tv);
        tv.setTextSize(30);
        tv.setText("TextView " + String.valueOf(i));
        tv.setLayoutParams(params);
        layout.addView(tv);
        tv.setId(i);
    }
    LinearLayout.LayoutParams layoutParam = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
    this.addContentView(layout, layoutParam);
}

XML-файл для вышеуказанной деятельности:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
</LinearLayout>

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

Вы пробовали использовать этот xml для своей активности:

activity2.xml:

<?xml version="1.0" encoding="utf-8" ?>
<ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_weight="1"
             android:layout_width="fill_parent"
         android:layout_height="fill_content">
        <LinearLayout                  
                android:layout_width="fill_parent"
                android:id="@+id/layout1"
                android:layout_height="fill_parent" 
                android:orientation="vertical">
        </LinearLayout>
</ScrollView>

А затем попробуйте добавить компонент в Activity2.class, например:

setContentView(R.layout.activity2);
...
LinearLayout layout = (LinearLayout)findViewById(R.id.layout1);
for(int i = 0; i < length; i++) 
{
        TextView tv = new TextView(getApplicationContext());
        registerForContextMenu(tv);
        tv.setTextSize(30);
        tv.setText("TextView " + String.valueOf(i));
        tv.setLayoutParams(params);
        tv.setId(i);
        layout.addView(tv);        
}
...
0 голосов
/ 25 ноября 2011

Вместо addContentView используйте SetContentView и попробуйте установить canScrollVertically (int direction) для макета.

ListView может быть альтернативой тому, чего вы пытаетесь достичь.

...