动态移动应用程序按钮

时间:2017-11-19 18:55:04

标签: android

class Brackets
  def self.paired?(s)
    stack = []
    brackets = { '{' => '}', '[' => ']', '(' => ')' }

    s.each_char do |char|
      if brackets.key?(char)
        stack.push(char)
      elsif brackets.values.include?(char)
        return false if brackets.key(char) != stack.pop
      end
    end
    stack.empty?
  end
end


Brackets.paired?("[ ] } ]") # => false
Brackets.paired?("[ ]") # => true
Brackets.paired?("[  ") # => false
Brackets.paired?("[ (] {}") # => false
Brackets.paired?("[ ( ) ") # => false
Brackets.paired?("[ ( text { ) } ]") # => false
Brackets.paired?("[ ( text ) {} ]") # => true

我正在使用相对布局,我有2个按钮,可以随机移动到3个不同的位置。如何在Java代码中执行此操作,上面的代码几乎没有任何作用,只是使我的按钮内的文本消失,但将它留在同一个地方。

 public void changeposition (int button){
    int whichPos = rand.nextInt(3) + 1;
    if(button == 1){
        switch(whichPos) {
            case 1: dirup.setPadding(0, 0, 284, 128);
            case 2: dirup.setPadding(0, 0, 156, 88);
            case 3: dirup.setPadding(0, 0, 24, 128);
        }
    }
}

这就是现在用XML定义按钮的方式。

1 个答案:

答案 0 :(得分:1)

如果您将填充大小设置为小部件的大小(在您的情况下为70dp * 70dp),则按钮没有足够的空间容纳文本。

在xml中指定了不会更改视图边界的边距,并且取决于外部视图。

更新您需要操作LayoutParams的视图边距。

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) dirup.getLayoutParams();
params.setMargins(left, top, right, bottom);
dirup.setLayoutParams(params);