gpt4 book ai didi

android - 在整个屏幕上移动 TextView

转载 作者:搜寻专家 更新时间:2023-11-01 08:10:03 25 4
gpt4 key购买 nike

我开发了一个全屏显示时间的应用程序。时分秒显示在屏幕中央。所以我的目标是,当我长按任何 TextView 时,能够在整个屏幕上滚动它,并将它放在我想要的位置...

我试图找到一个合适的代码来应用到我的应用程序,我找到了一个代码,它可以将文本转换为图像,然后移动该图像。但问题是,文本每秒更新一次,所以我认为每秒创建图像不是一个好主意...

有谁知道可以在整个屏幕上移动 TextView 的方法吗???这是我的 TextView 之一

private TextView txtHour;

txtHour = (TextView)findViewById(R.id.TxtHour);

txtHour.setOnLongClickListener(new OnLongClickListener{
....

我不知道要添加什么.... :( 请帮助!

编辑:根据第一个答案,我的代码应该是这样的吗?

         txtHour.setOnLongClickListener(new OnLongClickListener() {
public void onLongClick(View v){


public void drag(MotionEvent event, View v)
{

RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) v.getLayoutParams();

switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:
{
params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;
}
case MotionEvent.ACTION_UP:
{
params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;
}
case MotionEvent.ACTION_DOWN:
{
v.setLayoutParams(params);
break;
}
}

}});

编辑 2:最后这是结果代码,可以吗?

 package com.iamaner.T2Speech;
//imports
public class MAINActivity extends Activity{

private TextView txtHour;
private TextView txtMinutes;
private TextView txtSeconds;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

txtHour = (TextView)findViewById(R.id.TxtHour);
txtMinutes = (TextView)findViewById(R.id.TxtMinute);
txtSeconds = (TextView)findViewById(R.id.TxtSeconds);

txtHour.setOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
drag(event, v);
return false;
}});
}
public void drag(MotionEvent event, View v)
{

FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) v.getLayoutParams();

switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:
{params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;}
case MotionEvent.ACTION_UP:
{params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;}
case MotionEvent.ACTION_DOWN:
{v.setLayoutParams(params);
break;}
}}
}

还有这个框架布局

      <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/your_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<TextView
android:id="@+id/TxtHour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15mm"
android:textColor="#000000"/>

<TextView
android:id="@+id/TxtPoints1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/separator"
android:textSize="15mm"
android:textColor="#000000"
android:layout_gravity="center"
android:gravity="center"/>

<TextView
android:id="@+id/TxtMinute"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15mm"
android:textColor="#000000"
android:layout_gravity="center"
android:gravity="center" />

<TextView
android:id="@+id/TxtPoints2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/separator"
android:textSize="15mm"
android:textColor="#000000"
android:layout_gravity="center"
android:gravity="center"/>

<TextView
android:id="@+id/TxtSeconds"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15mm"
android:textColor="#000000"
android:layout_gravity="bottom|right" />


</FrameLayout>

最佳答案

将此添加到您的 onCreate:更好地使用 FrameLayout 本身。

 txtHour.setOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
drag(event, v);
return false;
}
});

这对您的 Activity 类来说是任何方法之外的。

       public void drag(MotionEvent event, View v)
{

RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) v.getLayoutParams();

switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:
{
params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;
}
case MotionEvent.ACTION_UP:
{
params.topMargin = (int)event.getRawY() - (v.getHeight());
params.leftMargin = (int)event.getRawX() - (v.getWidth()/2);
v.setLayoutParams(params);
break;
}
case MotionEvent.ACTION_DOWN:
{
v.setLayoutParams(params);
break;
}
}

关于android - 在整个屏幕上移动 TextView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10691781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com