我想在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也如此。就是麻烦点,但是也是可以实现的。
楼主想实现的就是类似网页的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;
现在使用column
和row
值动态显示按钮
做这样的事情:
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 上的多个平台中实现条码扫描器?