我遇到一个问题,即片段中的ScrollView会自动滚动到底部。因此,为解决此问题,我在this答案中建议在RelativeLayout中添加以下行:
INSERT INTO [Staging].[table] ([att1],[att2])
SELECT [att1], [att2] FROM [Staging].[vw_table]".
但是添加此行之后,android:descendantFocusability="blocksDescendants"
停止工作。如何添加这两行?
这是XML:
textIsSelectable
答案 0 :(得分:3)
在android:descendantFocusability="blocksDescendants"
中使用ViewGroup
时,它将阻止其所有子视图获得焦点
有关更多信息,请查看文档
android:descendantFocusability
定义在寻找要聚焦的View时ViewGroup及其子孙之间的关系。
必须是
android:descendantFocusability
中以下常量值之一。
afterDescendants
:-仅当其后代都不希望时,ViewGroup才会获得焦点。beforeDescendants
:-ViewGroup将在其任何后代之前获得焦点。blocksDescendants
:-ViewGroup将阻止其后代获得焦点。现在您的问题
但是添加此行之后,textIsSelectable停止工作。如何添加这两行?
AFAIK ,您不能同时使用两者
您需要为片段的自动滚动问题找到另一种解决方案
有些链接可能会帮助您解决将片段自动滚动到底部的问题
答案 1 :(得分:2)
首先,确保包含TextView的“相对布局”已将DescendantFocusability设置为“ Before Descendants”,focusable设置为“ true”,focusableInTouchMode设置为“ true”。接下来,在ScrollView中添加一个onTouchListener,以便在每次触摸TextView时将其移出焦点,就像这样:
container_of
答案 2 :(得分:2)
一种可能的方法是使用方法fullScroll
。
根据文档
布尔布尔全滚动(int方向)
响应于“ home / end”快捷键按下而处理滚动。此方法会将视图滚动到顶部或底部,并将焦点集中到新可见区域中的最上面/最下面的组件。如果没有任何组件适合作为焦点,则此滚动视图将重新获得焦点。
int方向:滚动方向:View.FOCUS_UP进入视图顶部,或者View.FOCUS_DOWN进入底部
因此,您应该删除
android:descendantFocusability="blocksDescendants"
并添加以下几行
XML :
android:id="@+id/myScrollView"
JAVA :
myScrollView = (ScrollView)findViewById(R.id.myScrollView);
myScrollView.fullScroll(View.FOCUS_UP);