我想在android 平台上实现多个button,当点击到某个button时,button显示一种图片,并将焦点设置在上面。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想在android 平台上实现多个button,当点击到某个button时,button显示一种图片,并将焦点设置在上面。相关的知识,希望对你有一定的参考价值。

我想在android 平台上实现多个button,当点击到某个button时,button显示一种图片,并将焦点设置在上面。其它未点击button显示另一种图片。当点击完成后,焦点button还是显示点击时的图片,直到焦点发生改变时(即点击另外的button),恢复到点击之前的图片。请高手指点,最好能有代码,谢谢!

RadioGroup里套RadioButton.

<RadioGroup android:orientation="horizontal" android:id="@+id/main_group" android:layout_width="fill_parent" android:layout_height="wrap_content">
<RadioButton android:id="@+id/main_group_radio1"
android:layout_weight="10" android:layout_height="wrap_content"
android:button="@drawable/main_group_radio1s" />
<RadioButton android:id="@+id/main_group_radio2"
android:layout_weight="10" android:layout_height="wrap_content"
android:button="@drawable/main_group_radio2s" />
</RadioGroup>

android:button="@drawable/main_group_radio2s" 这个是一个配置文件,里面设定按钮选中和没选中的状态,放到图片那个文件夹里.
文件名设置成main_group_radio2s就行了
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false"
android:drawable="@drawable/sam" />没选中的图片
<item android:state_checked="true"
android:drawable="@drawable/over_01" />选中的图片
</selector>追问

用button 或都imagebutton如何实现呢,谢谢!

追答

也可以实现,就是要在代码里操作。
思路是例如你有3个按钮分别A、B、C,然后你在A的监听中加上 点击后B和C的背景变成未选中的图案,A变成选中的图案,然后进行操作;B里加上点击后A和C的背景变化,B变成选中。C也如此。就是麻烦点,但是也是可以实现的。

参考技术A 点击按钮不是应该跳连接的么?
楼主想实现的就是类似网页的hover特效吧?
你在drawable里写一个xml文件,名字你自己起,
在里面写上每个button的样式和图片,其中包括点击和未点击的就可以实现。
好像是有一个判断,具体怎么加的记不清了。追问

你说的这种方式我用过,但只在点击完后,图片又回到了未点之前的了。不知道是怎么回事。

参考技术B 路过,打点酱油.

如何动态添加按钮?

我想动态添加按钮。我动态添加多个按钮,但我想按以下模式添加按钮:

[BUTTON1] [BUTTON2]
[BUTTON3] [BUTTON4]
[BUTTON5] [BUTTON6]

这意味着我想在动态连续添加2个按钮。

我尝试了很多选择。其中一个是:

 LinearLayout ll = (LinearLayout) findViewById(R.id.buttonlayout);
    Button[][] buttonArray = new Button[count][count];
    TableLayout table = new TableLayout(this);
    for (int row = 0; row < count; row++) {
        TableRow currentRow = new TableRow(this);
        for (int button = 0; button < row; button++) {
            Button currentButton = new Button(this);
            // you could initialize them here
            currentButton.setOnClickListener(this);
            // you can store them
            buttonArray[row][button] = currentButton;
            // and you have to add them to the TableRow
            currentRow.addView(currentButton);
        }
        // a new row has been constructed -> add to table
        table.addView(currentRow);
    }

最后获取该新表并将其添加到您的布局中。 ll.addView(table);

注意:按钮数可以是随机的。

我怎样才能做到这一点?

答案

在XML中使用垂直LinearLayout。然后以编程方式创建水平LinearLayout并在水平布局中添加按钮。对于每一行,创建并添加新的水平布局。

XML:

<LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/buttonlayout">
</LinearLayout>

活动:

public class dynamicButtons extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myLayout);

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);

    int numberOfRows = 3;
    int numberOfButtonsPerRow = 2;
    int buttonIdNumber = 0;


    final LinearLayout verticalLayout= LinearLayout)findViewById(R.id.buttonlayout);

    for(int i=0;i<numberOfRows;i++){
      LinearLayout newLine = new LinearLayout(this);
      newLine.setLayoutParams(params);
      newLine.setOrientation(LinearLayout.HORIZONTAL);
      for(int j=0;j<numberOfButtonsPerRow;j++){
            Button button=new Button(this);
            // You can set button parameters here:
            button.setWidth(20);
            button.setId(buttonIdNumber);
            button.setLayoutParams(params);
            button.setText("Button Name");
            button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {

                    Intent is = new Intent(getApplicationContext(), someOtherApplication.class);
                    is.putExtra("buttonVariable", buttonIdNumber);
                    startActivity(is);
                }
            });

            newLine.addView(button);
            buttonIdNumber++;
      }
      verticalLayout.addView(newLine);

    }
   }
  }
另一答案

试试这段代码:

TableLayout layout = new TableLayout (this);
    layout.setLayoutParams( new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));

    for (int i=0; i<2; i++) {   //number of rows
        TableRow tr = new TableRow(this);
        for (int j=0; j<2; j++) { //number of columns
            Button b = new Button (this);
            b.setText("Button:"+i+j);
            b.setTextSize(10.0f);
            b.setOnClickListener(this);
            tr.addView(b, 30,30);
        }
        layout.addView(tr);
    }

由于您的按钮数量是随机的,您可以使用:

 int total = 20;  //random number of buttons
int column = 3;    //specify the column number
int row = total / column;  

现在使用columnrow值动态显示按钮

另一答案

做这样的事情:

    LinearLayout ll_Main  = new LinearLayout(getActivity());
    LinearLayout ll_Row01 = new LinearLayout(getActivity());
    LinearLayout ll_Row02 = new LinearLayout(getActivity());

    ll_Main.setOrientation(LinearLayout.VERTICAL);
    ll_Row01.setOrientation(LinearLayout.HORIZONTAL);
    ll_Row02.setOrientation(LinearLayout.HORIZONTAL);

    final Button button01    = new Button(getActivity());
    final Button button02    = new Button(getActivity());   
    final Button button03    = new Button(getActivity());
    final Button button04    = new Button(getActivity());

    ll_Row01.addView(button01);
    ll_Row01.addView(button02);

    ll_Row02.addView(button03);
    ll_Row02.addView(button04);

    ll_Main.addView(ll_Row01);
    ll_Main.addView(ll_Row02);

    button04.setVisibility(View.INVISIBLE);
    button04.setVisibility(View.VISIBLE);
另一答案

如您在问题中提到的那样,使用自定义项目创建listview / recyclerview,而不是按照您在问题中提到的那样,使用按钮填充listView(如果项目索引%2 == 0则在适配器内部,否则将采用左侧位置,否则为正确位置)。

以上是关于我想在android 平台上实现多个button,当点击到某个button时,button显示一种图片,并将焦点设置在上面。的主要内容,如果未能解决你的问题,请参考以下文章

如何用android的Button模拟网页上的某一个Button的点击事件,实现进入另一个页面

如何在 IBM Worklight 上的多个平台中实现条码扫描器?

如何禁用多个按钮?

如何在android中的操作栏上添加多个图标?

代号一:想在所有平台上设置allowBackup = false

Android平台录音音量计的实现