我有这个问题:我想在某些位置放置一些Button,例如在屏幕的四个正方形处(已解决),并且我也希望当单击每个按钮时,在这些位置正好变成红色(尚未解决)。
这是主要的xml:
$message = '<?xml version="1.0" encoding="UTF-8" ?>
<command name="userlist">
</command>';
这是主要的java:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:layout_weight="15"
android:orientation="vertical">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:components="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/layout1">
<Button
android:id="@+id/one"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@color/colorPrimary"/>
<Button
android:id="@+id/two"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentEnd="true"
android:background="@color/colorPrimary" />
<Button
android:id="@+id/three"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:background="@color/colorPrimary" />
<Button
android:id="@+id/four"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:background="@color/colorPrimary"/>
</RelativeLayout>
</ScrollView>
</android.support.constraint.ConstraintLayout>
答案 0 :(得分:1)
在onCreate中设置您的按钮:
RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout1);
RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
Button one = (Button) findViewById(R.id.one);
one.setOnClickListener(listen);
Button two = (Button) findViewById(R.id.two);
two.setOnClickListener(listen);
Button three = (Button) findViewById(R.id.three);
three.setOnClickListener(listen);
Button four = (Button) findViewById(R.id.four);
four.setOnClickListener(listen);
最后为所有4个按钮创建监听器:
private View.OnClickListener listen = new View.OnClickListener() {
@Override
public void onClick(View view) {
GradientDrawable drawable = new GradientDrawable();
drawable.setShape(GradientDrawable.RECTANGLE);
drawable.setStroke(8, Color.RED);
Button button = (Button) view;
button.setBackground(drawable);
}
};
答案 1 :(得分:0)
好吧,如果为这些按钮提供ID,则可以在单击它们时更改其颜色。
因此,如果您点击buttonID,请执行逻辑,然后将颜色更改为buttonID。
// If you're in an activity:
buttonID.setBackgroundColor(getResources().getColor(R.color.red));
将红色添加到您的颜色xml中。
这可以放在您的onCreate中。 XML中按钮的ID处的buttonOne和buttonTwo。 这是最基本的方法。还有更多的方法,您也可以在这里看到这些答案。
buttonOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//logic here
}
});
buttonTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//logic here
}
});
答案 2 :(得分:0)
当您有听众时,更改某些内容相对容易。您不需要实现不同的方法,也不需要一个个地检查每个按钮。由于Button
也是一个视图,因此请执行以下伪代码。
// You need this if part, if you have other views that having the same listener.
// Otherwise, you do not need this if check.
if(is Clicked View is Button) {
// Now here, take the clicked view, which we know it is a button and change its colour.
}
顺便说一下,上面的代码将在覆盖的方法onClick
中。
编辑
为澄清起见,我添加了一小段代码。
@Override
public void onClick(View view) {
// Checking if the clicked View is a Button or not.
if(view instanceof Button) {
// view.getId() returns an integer.
Button clickedButton = (Button) findViewById(view.getId());
// Now, change the button's colour.
clickedButton.setBackground(........);
}
}
希望有帮助。祝你有美好的一天!
答案 3 :(得分:0)
如果在布局中创建了Buttons,那么为什么要动态添加它。 如果使用布局,则使用“ findViewById()”为这些按钮充气。然后,当用户单击时,对该按钮或所有按钮执行操作。
one.setBackgroundColor(Color.RED);
但是,如果您使用的是动态按钮创建,则存储要创建的所有4个按钮ID。然后执行类似的操作。
buttonId[index].setBackgroundColor(Color.RED);
答案 4 :(得分:0)
使您的主类实现为View.OnclickListener
public class MainFragment extends Fragment implements View.OnClickListener {
private void setUpViews() {
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
}}
@Override
public void onClick(View view) {
if(view instance of Button){
button.setBackgroundColor(getResources().getColor(android.R.color.holo_red_dark));
}
}
}