目前我正在使用paintObject.measureText(textCopy.substring(0,i))
迭代TextView文本的副本.例如,measureText("abc".substring(0,1))
将给出'b'的相对x坐标.我得到的y坐标layout.getLineTop()
.这是工作,但不准确的X坐标非等宽字体.我可以稍微校准,但在每个设备上它的工作方式不同.
我能想到的最好的解决方案是覆盖负责在屏幕上绘制TextView的类,并希望获得绘制到屏幕上的每个字符的坐标.
有谁知道我需要覆盖什么类来完成这个?或者其他一些创意解决方案?
我有一个DataGridView
对象:
dataGridView1.DataSource = an.peaks;
Run Code Online (Sandbox Code Playgroud)
(an.peaks是一个List<Point>
对象.type Point
有3个属性:x,y,z)
女巫在运行时生成下一个表:(显然我无法上传,Image
因为我是一个新用户所以我会尝试绘制它:)
____|_x__|_y__|_z__|[new column ]
____|_11_|_12_|_13_|[text/button] <==\
____|_20_|_30_|_40_|[text/button] <== } Add text if something or button if something else.
____|_50_|_60_|_70_|[text/button] <==/
Run Code Online (Sandbox Code Playgroud)
我想在新列中添加按钮(如图像/图中所示)到满足某些条件的每一行.如果条件不满意,请添加一些文本.
示例:如果数据库中已存在该点,则显示其物质名称(每个点代表一种物质).如果没有将"ADD"按钮添加到将新点添加到数据库的相应行.
条件不是问题 - 它们仅用于示例.问题是为每一行添加按钮/文本,为新按钮添加单击事件.
我正在尝试这个:
public void onClick(View view){
tv.animate().x(600).y(100).scaleX(3).scaleY(3);
tv.animate().x(400).y(1400).scaleX(1).scaleY(1);
}
Run Code Online (Sandbox Code Playgroud)
但它会跳过第一行动画.如何让它链接起来,首先它会做第一行,然后是下一行?
说我有这个代码:
int color = tv.getCurrentTextColor();
Run Code Online (Sandbox Code Playgroud)
如何仅更改此颜色的Alpha?
例如:
如果颜色是0x00ffffff
,我将如何更改为0xffffffff
?
有没有方法或我需要做一些hex/int操作?
我在AsyncTasks类中有这个工作代码.
protected void onProgressUpdate(Object... values) {
View view = (View) values[0];
view_group.addView(view);
view.animate().y(500).setDuration(1000);
}
Run Code Online (Sandbox Code Playgroud)
我试图将代码更改为:
protected void onProgressUpdate(Object... values) {
View view = (View) values[0];
view_group.addView(view);
ValueAnimator va = ObjectAnimator.ofInt(view, "y", 500);
va.setDuration(1000);
va.start();
}
Run Code Online (Sandbox Code Playgroud)
视图正在显示,但不是动画.
我错过了什么?
编辑:
我还尝试将ValueAnimator代码放入一个AnimatorListener
(当然使用不同的坐标),因此它将在第一个动画完成后运行,但它不起作用.
假设我有2个按钮,它们应该执行相同的操作但是在不同的对象上.
目前我正在将所有需要的引用传递给这样的方法:
private void sub1_add_to_db_btn_Click(object sender, EventArgs e)
{
Add_Substance_To_Database(
substanse1, sub1_add_to_db_btn, sub2_add_to_db_btn, sub1_found_in_db_list,
sub2_found_in_db_list, false, sub1_listBox, sub2_listBox);
}
private void sub2_add_to_db_btn_Click(object sender, EventArgs e)
{
Add_Substance_To_Database(
substanse2, sub2_add_to_db_btn, sub1_add_to_db_btn, sub2_found_in_db_list,
sub1_found_in_db_list, false, sub2_listBox, sub1_listBox);
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有其他更有效的方法来做到这一点.谢谢.
编辑:
这是我的一些代码看起来像,它让我疯狂!
private void sub1_add_to_db_btn_Click(object sender, EventArgs e)
{
Add_Substance_To_Database(substanse1, sub1_add_to_db_btn, sub2_add_to_db_btn,
sub1_found_in_db_list, sub2_found_in_db_list, false, sub1_listBox, sub2_listBox);
}
private void sub2_add_to_db_btn_Click(object sender, EventArgs e)
{
Add_Substance_To_Database(substanse2, sub2_add_to_db_btn, sub1_add_to_db_btn,
sub2_found_in_db_list, sub1_found_in_db_list, false, sub2_listBox, sub1_listBox);
}
private void sub1_edit_name_btn_Click(object sender, EventArgs e)
{
Add_Substance_To_Database(substanse1, sub1_add_to_db_btn, …
Run Code Online (Sandbox Code Playgroud)