- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的应用程序有一个总体布局,其中包括一个水平 ScrollView 。我正在做的是向 ScrollView 添加 32 个 fragment (它膨胀成带有两个按钮和一个 editText 的垂直线性布局。它们将成为均衡器的控件)。
问题是,当我尝试编辑其中一个 editText 时, ScrollView 一直向右滚动 - 因此您无法看到正在输入的内容,并且必须一直滚动回到该条目以查看它。
这是主要的 xml 布局。它将屏幕分成 4 个象限,水平 ScrollView 位于右下角:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity"
android:focusable="true"
android:focusableInTouchMode="true">
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:padding="4dp"
android:orientation="vertical"
android:layout_weight="2"
>
<TextView android:text="Hello World!" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="4"
android:padding="4dp"
android:orientation="vertical"
android:background="#FF0000"
>
<TextView android:text="Hello World!" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<HorizontalScrollView
android:id="@+id/hsv_eqControls"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:background="#FFFFFF"
android:descendantFocusability="beforeDescendants"
android:focusable="true"
android:focusableInTouchMode="true"
>
<LinearLayout
android:id="@+id/layout_eqControls"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
</LinearLayout>
这就是我要添加到 ScrollView 中的内容
<?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"
android:padding="3dp"
android:orientation="vertical">
<Button
android:id="@+id/btn_eqUp"
android:layout_width="60dp"
android:layout_height="60dp" />
<EditText
android:id="@+id/etext_eq"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:inputType="numberDecimal|numberSigned"
android:textAlignment="center"
android:layout_gravity="center_horizontal"
android:background="#EEEEEE"
android:hint="32dB"/>
<Button
android:id="@+id/btn_eqDown"
android:layout_width="60dp"
android:layout_height="60dp" />
<TextView
android:id="@+id/vtext_eqLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:layout_gravity="center"
android:text="1"/>
</LinearLayout>
这是我运行来填充 ScrollView 的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// View eqControls = findViewById(R.id.hsv_eqControls);
FragmentTransaction ft = getFragmentManager().beginTransaction();
for(int i = 1; i < 33; i++)
{
ft.add(R.id.layout_eqControls, new FragmentEQ(), "ch"+i);
}
ft.commit();
getFragmentManager().executePendingTransactions();
for(int i = 1; i < 33; i++)
{
FragmentEQ feq = (FragmentEQ) getFragmentManager().findFragmentByTag("ch"+i);
if(feq != null)
feq.setChannel(i);
}
}
}
这是我的 fragment 的代码:
public class FragmentEQ extends Fragment {
protected int _channel = 0;
protected ViewGroup _parent;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.activity_fragment_eq, container, false);
TextView label = (TextView) view.findViewById(R.id.vtext_eqLabel);
label.setText(Integer.toString(_channel));
return view;
}
public int getChannel() { return _channel; }
public void setChannel(int i)
{
_channel = i;
}
}
我已经尝试创建一个自定义的 HorizontalScrollView,并将 scrollTo() 和 onRequestFocusInDescendants() 覆盖为不执行任何操作的空白方法,但这没有任何改变。
public class EQScrollView extends HorizontalScrollView {
public EQScrollView( Context context, AttributeSet attrs)
{
super(context, attrs);
setSmoothScrollingEnabled(false);
}
@Override
public void scrollTo(int x, int y)
{
}
@Override
public boolean onRequestFocusInDescendants(int x, Rect y)
{
return false;
}
}
最佳答案
使用“设置原始输入类型”:
setRawInputType(InputType.TYPE_CLASS_NUMBER);
首先为我解决了这个问题。在意识到某些数字键盘不提供小数输入后,我最终为 EditText 使用标准文本输入,扩展了 HorizontalScrollView 并覆盖了“onRequestFocusInDescendants”、“requestChildRectangleOnScreen”和“getFocusables”,如下所示:
public class HorizontalScrollViewEx extends HorizontalScrollView {
public HorizontalScrollViewEx(Context context) {
super(context);
}
public HorizontalScrollViewEx(Context context, AttributeSet attrs) {
super(context, attrs);
}
public HorizontalScrollViewEx(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public HorizontalScrollViewEx(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected boolean onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect) {
return true;
}
@Override
public boolean requestChildRectangleOnScreen(View child, Rect rectangle, boolean immediate) {
return true;
}
@Override
public ArrayList<View> getFocusables(int direction) {
return new ArrayList<View>();
}
}
关于Android - HorizontalScrollView 在键盘打开时向右滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33156528/
有没有人知道那里有预览@page CSS 规则的工具?如果做不到这一点,有什么东西可以用来打印完全支持这些规则的文档吗? http://www.w3.org/TR/CSS2/page.html 歌剧最
出于某种原因,当我向我的元素添加右/左浮动时,它会在下一行的图像元素后面显示它们。 这是实际的事件页面: http://www.dealerbyte.co.uk/used-cars.php 代码如下:
我想知道是否可以使用下面的 onTouch 方法来检测用户是否在屏幕上向左、向右、向上或向下移动手指。我有一个包含对象的网格,我只希望用户能够在四个方向上移动其中一个对象。 我的想法是使用 Actio
我想获取div的鼠标坐标,如下所示: $("#box").mousemove(function(e){ var x = e.pageX - this.offsetLeft; var y = e.pag
到目前为止,我有一个可以左右前后移动的玩家,但是我如何设置它是向前的,就像在网格上一样向前,而不是在我的玩家注视的地方向前。我将相机设置为 FPS,它跟随玩家。现在我想让玩家能够使用我的 MouseL
在水平时间轴 slider jquery 中,我希望默认情况下它是右向的。就像现在的图片,2015 年的价格就在右边。我希望默认选择最右边的 2017 年价格,用户可以向左滚动 我的代码 $('.ti
我正在尝试为纸牌游戏(Yu-Gi-Oh :D)制作一个牌组管理器,目前我只有一个包含可用纸牌的表格和一个面板,该面板以更大的尺寸显示用户选择的纸牌以及纸牌的描述。MVCE: import ja
我有一个从简单手势扩展的类,我正在使用 onfling 方法: class MyGestureListener extends GestureDetector.SimpleOnGestureListe
我很懒惰,讨厌每 5 秒就必须将右手移到箭头键或鼠标上来移动光标和编辑文本。有什么方法可以让我的手保持在打字位置并四处移动光标? 最佳答案 您可以在特定的首选项窗口中更改这些设置: windows -
这是我的第一个应用程序,我尝试进行从右到左或从左到右的翻译。 这是代码 Res > anim > translate_left Res > anim > translate_right
我有以下代码: out of bound :( 我不希望它穿过 window 。我需要它的右边框保持可见。 JSFiddle 链接:http://jsfiddle.net/9SZAB/ 最佳答案
我正在尝试让我的导航图标菜单按钮在 THIS IS A LOGO Home About
因为我自己的代码有问题,所以我正在研究以下链接: https://bost.ocks.org/mike/path/ 我想我已经低于 // push a new data point onto the
所以首先这就是我要实现的目标 我想保持 Logo 在网页中间居中,搜索栏向右拉(下面有文字)这是我目前拥有的代码: http://jsfiddle.net/62b4jf1n/
这个问题在这里已经有了答案: Android: How to handle right to left swipe gestures (22 个回答) 关闭4个月前。 我有一个 Android 应用程
我正在尝试创建一个控件,用户可以在该控件中触摸并移动框架内的按钮。这是我的代码。 - (void)wasDragged:(UIButton *)button withEvent:(UIEvent *)
我正在使用svg创建一个几何campass工具,其中有3个btns,1) 用于移动位于中心的整个营地2) 增加圆的半径3)用于旋转圆的半径4)根据第4个btn的位置使用路径(svg)绘制圆,该位置始终
无论分辨率如何,我都试图将此框移到屏幕的右侧,但我找不到答案。 我的代码是这样的 wp_get_archives( array( 'type' => 'postbypost',
我正在为 Qt 按钮小部件编写弹出菜单。每当单击按钮时,都会弹出一个菜单(在按钮下方)。 弹出菜单默认位于下方左侧。 有没有办法让弹出菜单在按钮下方的右侧弹出? 没有设置位置功能,所以我想知道是否有一
我正在尝试使用 jQuery 构建一个扫雷游戏,我成功地使用 event.which 处理了左右点击,但是是否可以同时检测到左右按钮的点击? 最佳答案 我怀疑你是否会同时获得两者,一次会先出现,即使相
我是一名优秀的程序员,十分优秀!