如何首先在活动中显示选定的视图

Posted

技术标签:

【中文标题】如何首先在活动中显示选定的视图【英文标题】:How to show selected View in an Activity first 【发布时间】:2011-11-30 17:31:18 【问题描述】:

我在 android TextView 中有一个活动,然后 ListView 又是 TextView。第一个 TextView 的内容填满了整个屏幕,为了查看 ListView 和第二个 TextView,用户必须向下滚动。现在我希望在活动开始时显示第二个 TextView 而不是第一个 TextView。

相反,我希望 TextView2 在活动开始时可见。

已编辑

根据@Urban 建议的示例代码

public class FocusTestActivity extends Activity 
private static final String TAG = "FocusTestActivity";
ScrollView scroll;
@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TextView text1 = (TextView) findViewById(R.id.text1);
    TextView text2 = (TextView) findViewById(R.id.text2);
    TextView text3 = (TextView) findViewById(R.id.text3);
    String hello = "We provide services to K-12 education sector."
            + "Our services include Feasibility report, Marketing, Curriculum design"
            + "Teachers planning, Design and Technology, Parents expectation"
            + "management, Transport planning, Day-to-day operations and Statutory"
            + "compliances. Please find a brief introduction attached with mail. Also visit"
            + "www.wissenways.com We can help you with overall process of setting-up school. We have"
            + "experience include establishing International, pre-school and CBSE"
            + "schools from scratch. Please feel free to contact if you need some help in your school venture."
            + "Best of Luck!<br/><br/>";

    text1.setText(html.fromHtml(hello));
    text2.setText(Html.fromHtml(hello));
    text3.setText(Html.fromHtml(hello));
    ScrollView scroll = (ScrollView) findViewById(R.id.scrollcontainer);


public void onStart() 
    super.onStart();
    Log.d(TAG,"Inside onStart");
    scroll.post(new Runnable() 

        @Override
        public void run() 
            scroll.fullScroll(ScrollView.FOCUS_DOWN);
        
    );

XML 代码

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/scrollcontainer"
   android:layout_
   android:layout_>
   <LinearLayout android:orientation="vertical"
    android:layout_
    android:layout_
    >
<TextView  
    android:id="@+id/text1"
    android:layout_ 
    android:layout_ 
    android:text="@string/hello"
    android:textSize="17sp"/>
<TextView  
    android:id="@+id/text2"
    android:layout_ 
    android:layout_ 
    android:text="@string/hello"
    android:textSize="17sp"/>
<TextView  
    android:id="@+id/text3"
    android:layout_ 
    android:layout_ 
    android:text="@string/hello"
    android:textSize="17sp"/>
</LinearLayout>
</ScrollView>

LOGCAT 输出:

【问题讨论】:

所以将列表视图保持在顶部:|我不明白这是什么问题。 当活动开始时,第二个 TextView 应该在屏幕上可见,而不是第一个 TextView。 (注意:Text 有很长的字符串,很容易填满屏幕) @ShailendraRajawat 我已经编辑了我的问题。 @Urban 我已经编辑了问题。 【参考方案1】:
getScrollView().post(new Runnable() 

    @Override
    public void run() 
        getScrollView().fullScroll(ScrollView.FOCUS_DOWN);
    
);

在 onCreate 中使用此代码应该在底部位置启动滚动视图(您的列表和两个文本视图所在的位置)。我不知道您为什么要这样做,我猜可能有更好的方法来做您想做的事情,而不是将滚动位置强制到底部,但无论如何...This 是来自的问题上面的代码来自哪里,你可以搜索它。

希望这会有所帮助。

【讨论】:

需要错误详情。如果您尝试在工作线程(而不是像 onCreate 这样的 UI 线程)中执行上述操作,那么它将崩溃。 我使用代码编写了一个示例应用程序。看起来有一些问题,因为应用程序崩溃了。 你能从上面发布的图片中读取日志输出吗?我猜不出屏幕截图中的内容:| 我添加了 100% 大小的屏幕截图。看看? Gaurav,对我来说它仍然部分被切断,我无法找出错误。为什么不能直接复制粘贴文本?【参考方案2】:

我可以为您提供 3 个简单的选项:

    换个地方

    使用第二个文本视图创建另一个活动并首先启动该活动,然后显示当前的活动

    在您的活动开始时在第二个文本视图中显示带有文本的 Toast(这个问题是用户关闭它并且您想要再次显示它或者用户想要再次看到它您需要启动一个新的吐司)

我不完全理解你在这个问题上的困难

编辑: 第一个 textview 何时必须显示在顶部?如果从不只做第一个选项:\如果在某些事件下,在顶部和底部有一个空的文本视图,并通过代码将它的文本更改为你想要的那一刻

【讨论】:

我试图通过添加几张图片来解释我的观点。你的任何建议都不能解决我的问题。 View 的顺序必须是 TestView1ListviewTextView2 并且当活动开始时 TextView2 应该在屏幕上并且用户应该能够向上滚动以查看 TextView1。谢谢。【参考方案3】:

你也可以在你的 xml 文件中使用 RealtiveLayout

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_
android:layout_>
<TextView 
    android:id="@+id/txtview2"
    android:layout_
    android:layout_/>
<ListView 
    android:id="@id/android:list"
    android:layout_
    android:layout_
    android:layout_below="@id/textview2/>
<TextView 
    android:id="@+id/txtview1"
    android:layout_
    android:layout_
    android:layout_below="@id/android:list"/>

</RelativeLayout>

【讨论】:

以上是关于如何首先在活动中显示选定的视图的主要内容,如果未能解决你的问题,请参考以下文章

如何从自定义列表视图中获取选定项目并在 toast 消息中打印?

单击表格视图时如何显示选定的行?

单击一个列表视图传输两个列表视图数据

如何在另一个视图控制器上向 UInavigationcontroller 显示完整的选定表格单元格

列表视图中非活动选定项目的系统颜色?

将列表视图选定的文本传递给另一个活动