我有一个像ScorrView一样的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">
<ScrollView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollView1">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:Text="Text1"
android:id="@+id/Text1" />
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:Text="Text1"
android:layout_below="@+id/Text1"
android:id="@+id/Text2" />
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:Text="Text1"
android:layout_below="@+id/Text2"
android:id="@+id/Text3" />
</RelativeLayout>
</ScrollView>
</LinearLayout>
现在我想制作如果单击Text2然后ScrollView在屏幕的TopMost上有位置Text2,那么如果我单击Text3它将使ScrollView在顶部有Text3。它有可能吗?如何?
default
//x
Text1
Text2
Text3
//z
OnClick Text2
Text1 hidden, visible if scroll
//x
Text2
Text3
//z
即时尝试添加RequestFocus()并且无法正常工作,TextView2.ScrollTo(0,0)也只将Scroll位置移动到0而不关注TextView2
答案 0 :(得分:0)
您可以将ScrollView
滚动到后面代码中的特定位置,对于您的场景,您可以使用例如以下代码:
public ScrollView scview;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
SetContentView(Resource.Layout.layout1);
scview = FindViewById<ScrollView>(Resource.Id.scrollView1);
TextView tv1 = FindViewById<TextView>(Resource.Id.Text1);
TextView tv2 = FindViewById<TextView>(Resource.Id.Text2);
TextView tv3 = FindViewById<TextView>(Resource.Id.Text3);
tv1.Click += Tv_Click;
tv2.Click += Tv_Click;
tv3.Click += Tv_Click;
}
private void Tv_Click(object sender, EventArgs e)
{
var tv = sender as TextView;
var yoffset = tv.Top;
scview.ScrollTo(0, yoffset);
}
但要明确的是,ScrollView只能在其内容大于实际展示时滚动,因此对于您的情况,如果您的滚动高度为match_parent
而您只有三个{ {1}},然后无法滚动。如果我在这里将高度更改为100dp,点击TextView
会使Text2
滚动到它,但如果我点击ScrollView
,则Text3
将不会滚动因为它已经到达结尾,最上面的项目仍然是ScrollView
,这是设计的。