0

我昨天开始使用 Android 编程,我通过在线教程做了一些工作,我有一个问题:

我在我的空白视图中放了一个图标,showText当你点击它时它正在调用我的方法,这将如下所示:

 /* Called when the user clicks the android button */**

    public void showText(View view) {
        TextView textView = new TextView(this);
        textView.setTextSize(25);
        textView.setText("Hurray! I'm an android!");
        setContentView(textView);
}

当然,我可以开始一个新的 Intent 并将其传递给一个完整的新 Activity,例如 ashowTextActivity或类似的东西,但我想知道是否有可能将此文本显示到显示我的图标的当前视图。

当我ContentViewsetContentView(textView)我的图标(一个小机器人图)更改时,它消失了。

是否有类似 的东西add-method,它将它添加textView到我main.xml的布局中,以便布局更改和匹配refresh-method以使我的 android 图形和文本对我可见?

4

2 回答 2

0

您可以将 TextView 添加到布局,并将 Visibility 参数设置为 Hidden 或 Gone - 当可见性消失时,Control 不会在父级内部保留空间。第二件事是引用父容器,例如假设你有一个名为 mainContainer 的线性布局,你可以这样做:
LinearLayout ll = (LinearLayout)findViewById(R.id.mainContainer); ll.AddChild(textView)
这样你可以以编程方式创建和操作你的 UI,但要小心它更难引用这样的控件并保持他们的状态
编辑:
还要设置动态创建的视图的参数,您需要参考适当的 LayoutParam 类。如果控件的容器是 LinearLayout,则需要应用 LinearLayoutParams 等。祝你好运!

于 2014-08-05T12:49:56.283 回答
0

这是 MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

public class MainActivity extends Activity {
    private LinearLayout layout;
    private ImageView imageView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        layout=(LinearLayout)findViewById(R.id.main);
        imageView=(ImageView)findViewById(R.id.imageView1);
        imageView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                LayoutParams lparams = new LayoutParams(
                           LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                        TextView tv=new TextView(MainActivity.this);
                        tv.setLayoutParams(lparams);

                        tv.setText("test");
                        layout.addView(tv);
            }
        });
    }
}

我的 activity_main.xml 是

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/main"
android:gravity="center"
android:orientation="vertical">

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/ic_launcher" />

</LinearLayout>
于 2014-08-05T13:43:13.417 回答