RubyMotion Android自定义按钮

问题描述 投票:2回答:1

我正在尝试在我的Android应用中创建一个具有自定义背景并位于屏幕中央的按钮。我已经使用Android Studio做到了,但是现在我必须使用RubyMotion。这应该是按钮的外观,如下所示

here

这是我的RubyMotion的main_activity.rb文件:

class MainActivity < Android::App::Activity
  def onClick(view)
    if @button.text == "hello"
      @button.text = "world"
    else
      @button.text = "hello"
    end
  end

  def onCreate(savedInstanceState)
    super

    relativeLayout = Android::Widget::RelativeLayout.new(self)

    @button = Android::Widget::Button.new(self)
    @button.text = "hello"

    @button.onClickListener = self

    relativeLayout.addView(@button)
    self.contentView = relativeLayout
  end
end

这只是添加了一个按钮,单击该按钮时其文本会更改。但是我找不到一种在屏幕上居中更改背景的方法。使用Android Studio,我将自定义形状创建为可绘制对象,然后将按钮背景设置为该形状。不确定如何翻译RubyMotion代码或其他方法。

android ruby button rubymotion
1个回答
0
投票

这是否达到您想要的目的?

class MainActivity < Android::App::Activity

  def onCreate(savedInstanceState)
    super

    relativeLayout = Android::Widget::RelativeLayout.new(self)

    @button = Android::Widget::Button.new(self)
    @button.text = "hello"
    @button.onClickListener = self
    @button.setBackgroundResource(
      self.resources.getIdentifier('android_normal', 'drawable', self.packageName)
    )

    params = Android::Widget::RelativeLayout::LayoutParams.new(
      Android::Widget::RelativeLayout::LayoutParams::WRAP_CONTENT,
      Android::Widget::RelativeLayout::LayoutParams::WRAP_CONTENT)
    params.addRule(Android::Widget::RelativeLayout::CENTER_HORIZONTAL)
    params.addRule(Android::Widget::RelativeLayout::CENTER_VERTICAL)

    relativeLayout.addView(@button, params)

    self.contentView = relativeLayout
  end

  def onClick(view)
    puts 'click'
  end

end
© www.soinside.com 2019 - 2024. All rights reserved.