【问题标题】:Adding textView to actual Activity without opening a new Activity在不打开新 Activity 的情况下将 textView 添加到实际 Activity
【发布时间】:2014-08-05 11:57:22
【问题描述】:

我昨天开始使用 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,例如 showTextActivity 或类似的东西,但我想知道是否有可能将此文本显示到当前视图,我的显示图标。

当我将ContentView 更改为setContentView(textView) 时,我的图标(一个小机器人)消失了。

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

【问题讨论】:

  • addContentView() 方法。
  • @nobalG 有两个采用View 参数的setContentView() 重载。
  • @MikeM。 :) 感谢您指出,我不知道这一点;但是我们在哪里需要您指定的 setContentView()?...在​​某个框架或 ???
  • @nobalG 我不确定我是否正确理解了您的问题,但如果您想为Activity 的布局动态创建Views,而不是使用静态xml定义,这就是你要使用的。
  • @MikeM。谢谢... :)

标签: android onclick textview setcontentview


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这是 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 2021-11-21
      相关资源
      最近更新 更多