【发布时间】:2012-03-20 19:31:40
【问题描述】:
我有 10 个垂直的 TextView,其中包含两个数字,由一条线隔开。
seatStats2[i].setText(0 + "\n" + 0);
当这些文本视图第一次可见时,它们看起来很好:
但是,如果我单击或长按屏幕上十个按钮中的任何一个,textViews 会拉伸以包含 \n 字符是否位于第一行(我测试了不同的数字组合以确认这一点)。
单击按钮的方法无论如何都没有链接到 TextViews(LongClicking 是但两者都会影响它)。无论如何,我都会为这两个听众提供代码。 textView2 是包含有问题的 textView 的数组。如果我输入更多的数字,我希望保持 textViews 的拉伸能力,但我想消除点击之间不必要的拉伸。
//Creates longClickListener, used for players to sit in or out.
longClickListener = new View.OnLongClickListener()
{
@Override
public boolean onLongClick(View v)
{
if(moveButtonMode)
return false;
for(int i=0; i<10; i++)
{
//Each seat[i] will correspond with each imageButtoni+1
if(v.getId() == (getResources().getIdentifier("imageButton" + (i+1), "id", "en.deco.android.livehud")))
{
//If the seat is empty fill it, place a player in the seat and change the buttons colour to grey and setup stat panel
if(table.seats[i].getState().equals("empty"))
{
seatButton[i].setImageResource(R.drawable.black_seat);
table.seats[i].sit(new Player());
table.incrementOccupiedSeatCount();
seatStats[i].setVisibility(View.VISIBLE);
seatStats2[i].setVisibility(View.VISIBLE);
seatStats[i].setText(table.seats[i].getPlayer().getVpip() + "/" + table.seats[i].getPlayer().getPfr() + "/" + table.seats[i].getPlayer().getHands());
seatStats2[i].setText(table.seats[i].getPlayer().getSteal() + "\n" + table.seats[i].getPlayer().getThreeBet());
}
//If the seat is full, empty it
else
{
seatButton[i].setImageResource(R.drawable.dotted_box);
seatStats[i].setText("");
table.seats[i].sitOut();
table.decrementOccupiedSeatCount();
seatStats[i].setVisibility(View.INVISIBLE);
seatStats2[i].setVisibility(View.INVISIBLE);
}
}
}
return true;
}
};
public void playerClickhandler(View v)
{
if(!moveButtonMode)
{
for(int i = 0; i<10; i++)
{
if(v.getId() == getResources().getIdentifier("imageButton" + (i+1), "id", "en.deco.android.livehud"))
{
if(table.seats[i].getState() == "active")
{
table.seats[i].setState("called");
seatButton[i].setImageResource(R.drawable.green_seat);
}
else if(table.seats[i].getState() == "called")
{
table.seats[i].setState("raised");
seatButton[i].setImageResource(R.drawable.orange_seat);
}
else if(table.seats[i].getState() == "raised")
{
table.seats[i].setState("active");
seatButton[i].setImageResource(R.drawable.grey_seat);
}
}
}
}
else
{
for(int i = 0; i<10; i++)
{
if(v.getId() == getResources().getIdentifier("imageButton" + (i+1), "id", "en.deco.android.livehud"))
{
dealerBtnImage[table.getButtonSeat()].setVisibility(View.INVISIBLE);
table.passButton(i);
dealerBtnImage[table.getButtonSeat()].setVisibility(View.VISIBLE);
moveButtonMode = false;
nextHandButton.setEnabled(true);
}
}
}
}
XML 文本视图示例
<TextView android:id="@+id/textView19" android:visibility="invisible" android:background="#000000" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_toRightOf="@+id/imageButton9" android:layout_alignParentTop="true"></TextView>
enter code here
【问题讨论】:
-
查看 0 相互重叠的文本视图。底部图片右侧有一点额外的黑色空间
-
@Hannele 垂直的 TextView 已向右拉伸。它可能看起来很琐碎,但是当它每隔几次点击就会发生并且使我的程序非常紧张时很烦人。
-
如果您的 textview 有透明背景,或者您使用了支持透明背景的控件,这不会打扰您。我在您提供的代码示例中看不到任何会导致更改宽度的内容。 (PS:您可以尝试强制最大宽度仅显示 X 个整数(假设您可以高于 9))
-
这可能是Android中的一些错误。您可以尝试通过使用 2 个 TextView 来解决它 如果它甚至是您的错误,那么以这种方式修复它可能比找到您的错误更快:)
-
@Deco 可能有一种方法可以通过巧妙的布局来做到这一点。例如。在您的
<TextView />android:gravity="right" android:ems="10"中总是足够宽 10 m(因为这通常是最宽的字符)并且文本将位于 textview 的右侧。