2

我有一个activity.xml

用户可以用手指左右移动这些框(按钮)。

但是白色的小箭头没有到达盒子的中间

(有时太右,有时太左)

在此处输入图像描述

我试图在其左侧添加/删除边距。

但这没有帮助。

在此处输入图像描述

我应该在哪里环顾四周?

 <com.w.navigate.SearchButtonsBarHorizontalScrollView
        android:id="@+id/searchButtonBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/engines_bg"
        android:fadingEdge="horizontal"
        android:gravity="center"
        android:padding="0dp"
        android:scrollbars="none" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            android:paddingTop="25dp" >

            <ImageButton
                android:id="@+id/leftMargin"
                android:layout_width="110dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/search_engine_button"
                android:visibility="invisible" />

            <ImageButton
                android:id="@+id/searchButton1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/search_engine_button"
                android:onClick="engineClicked" />

            <ImageButton
                android:id="@+id/searchButton2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/search_engine_button"
                android:onClick="engineClicked" />

            <ImageButton
                android:id="@+id/searchButton3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/search_engine_button"
                android:onClick="engineClicked" />

            <ImageButton
                android:id="@+id/searchButton4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/search_engine_button"
                android:onClick="engineClicked" />
        </LinearLayout>
    </com.w.navigate.SearchButtonsBarHorizontalScrollView>

也许修复应该在代码中:

public boolean onTouchEvent(MotionEvent event) {
    super.onTouchEvent(event);
    Log.d("w","ontouchevent");      
    if (event.getAction()==MotionEvent.ACTION_UP) {
        Log.d("WAZE","action up");
        Integer min_dist=null;
        SearchEngine min_se=null;
        @SuppressWarnings("unchecked")
        Map<Object, SearchEngine> engines=(Map<Object, SearchEngine>)getTag(R.id.searchEngines);
        Iterator<SearchEngine> i=engines.values().iterator();
        while (i.hasNext()) {
            SearchEngine tmp_se=(SearchEngine)i.next();
            int tmp_dist=Math.abs(tmp_se.getButton().getButtonXPosition()-getScrollX()-getWidth()/2);
            if (min_dist==null || tmp_dist<min_dist) {
                min_dist=tmp_dist;
                min_se=tmp_se;
            }
        }
        ((SearchActivity)getTag(R.id.searchActivity)).setActiveEngine(min_se);
    }
    return true;

}
4

2 回答 2

0

如果我没记错的话,请看一下指向箭头的位置——它根本不在屏幕的水平中间。你实际上在滚动视图中做所有事情。

从应用程序中截取真实的屏幕截图以进行测试。

于 2013-07-19T16:18:39.250 回答
0

我认为您的问题来自:

android:layout_alignParentBottom="true"

这样,您的箭头与您的父级(按钮)对齐。我在 android developerpers 上进行了搜索,发现了一个对您非常有用的 xml 属性:

android:layout_centerHorizontal="true"

在 Android Developerper 中,以下是描述:

如果为真,则将此子项水平居中于其父项中。

希望它会工作; 我是 StackOverflow 的新手,也许我的答案格式不正确。

于 2013-07-12T10:05:33.760 回答