在屏幕上获取按钮位置

时间:2014-12-06 12:05:47

标签: android android-ui android-button

我创建了一个动态按钮并将其添加到LinearLayout,Linear布局的父视图是Horizo​​ntalScrollView。 我需要动态地移动Horozontal scollview的滚动位置。

我无法在屏幕上显示按钮位置。它始终为屏幕上的按钮Y和Y位置提供[0,0]。

我的XML文件:

 <HorizontalScrollView
            android:id="@+id/horizontalScrollView1"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_above="@id/imv_Line_Invisibe"
            android:layout_marginLeft="15dp"
            android:layout_toRightOf="@id/imv_logo"
            android:scrollbars="none" >

            <LinearLayout
                android:id="@+id/lay_but"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:orientation="horizontal" >
            </LinearLayout>

</HorizontalScrollView>

将按钮动态添加到线性布局:

    int i = 0;
    for (HashMap<String, String> map : category)
        for (Entry<String, String> mapEntry : map.entrySet()) {
            String strButLabel = mapEntry.getValue();
            Log.i("map", "" + strButLabel);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
            params.weight = 1.0f;
            String value = mapEntry.getValue();
            TextView tvSetID = new TextView(this);
            tvSetID.setId(i);
            butCategory = new Button(this);
            butCategory.setId(i);
            butCategory.setText(value);
            butCategory.setTextSize(13);
            butCategory.setAllCaps(true);
            butCategory.setLayoutParams(params);
            butCategory.setTypeface(custom_font, Typeface.BOLD);
            butCategory.setGravity(Gravity.CENTER | Gravity.BOTTOM);
            butCategory.setPadding(0, 0, 20, 20);
            butCategory.setBackgroundResource(R.drawable.nav_phone_unselect);
            butCategory.setTextColor(Color.parseColor("#666666"));
            butCategory.setOnClickListener(OnClickChangeButtonColor(butCategory));
            i++;
        }

这是我用来获取按钮在屏幕上的位置的代码:

int temp_index = intent.getIntExtra("btn_index_value", 0);
Button butCategory = (Button) findViewById(temp_index);
butCategory.setBackgroundResource(R.drawable.nav_phone_select);
butCategory.setTextColor(Color.parseColor("#FFFFFF"));
String i1 = butCategory.getText().toString();
int[] locations = new int[2];
butCategory.getLocationOnScreen(locations);
int x = locations[0];
int y = locations[1];
horizontal_Category.scrollTo(x, y);
index = temp_index;

1 个答案:

答案 0 :(得分:2)

你可以使用它 - View.getLocationOnScreen()和/或getLocationInWindow()。