如何以编程方式将textview添加到horizo​​ntalScrollView?

时间:2014-01-30 16:29:23

标签: android horizontalscrollview

我正在尝试以编程方式将一大堆特定宽度的文本视图添加到选项卡上。现在他们的setX()可能超出了屏幕的分辨率。例如,我的标签宽度为1240像素,我想放置一个2000像素的TextView,当然还有一个水平滚动功能。我实际上是根据所提取的数据动态创建时间轴。

我只是想(暂时)将多个TextView投射到屏幕上,并为它们提供水平滚动视图。我不确定是否做了setX(2000);将填充TextView超出屏幕。如何让Horizo​​ntalScrollView工作,以便我可以向右滑动我的主布局以查看剩余的两个已创建的TextView?

一些基本代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relative_layout"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" 
android:orientation="horizontal">

<HorizontalScrollView
    android:id="@+id/horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
</HorizontalScrollView>

</RelativeLayout>

MainActivity:

public class MainActivity extends Activity {

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

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.relative_layout);
    for(int i = 50; i < 550; i+=100){
        TextView myText = new TextView(this);
        myText.setX(i * 3);
        myText.setText("HELLLLLOOOO");
        layout.addView(myText);
    }
}

@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;
}
}

2 个答案:

答案 0 :(得分:4)

MainActivity

public class MainActivity extends Activity {

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

         LinearLayout sv = (LinearLayout)findViewById(R.id.ll);
            for(int i = 50; i < 550; i+=50){
                TextView myText = new TextView(this);
                myText.setX(i * 3);
                myText.setText("HELLLLLOOOO");
                sv.addView(myText);
            }
            }

    @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;
    }

}

XML

<HorizontalScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


    <LinearLayout
        android:id="@+id/ll"        
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    </LinearLayout>
</HorizontalScrollView>

答案 1 :(得分:0)

创建一个自定义视图,例如

public class Example extends HorizontalScrollView {

}

执行所有未实现的方法,然后写下:

LinearLayout l = new LinearLayout(context);

TextView tv = new TextView(context);

tv.setText("Example");

tv.setTextColor(Color.RED);

l.addView(tv);

addView(l);

现在在你的xml中,输入包名和类名:

<com.argha.Example android:height and all /> 

完成后,现在你有了带有TextView的Horizo​​ntalScroll视图...你想要的更多文字与上面相同。

很抱歉,如果您发现任何代码错误,因为我输入了手机。