实践要点:
①Imageview可见与不可见 textview.getVisibility(View.Visible)
②Textview点击事件监听 public void onClick(View v)
③Textview状态改变 textview.setTextColor(Color.WHITE)
textview.setBackgroundResource(R.drawable.image)
textview.setBackgroundResource(R.color.black)
这个代码实现的样式功能
1、点击一个背景是图片的textview出现对勾标记,再次点击对勾标记消失
2、当有一个及以上的对勾标记时确认按钮(textview)改变背景与文字颜色
3、当没有一个被标记时点击确定出现toast提示
代码如下
xml主体部分(两个圆形图片是textview,对勾标志是imageview,确认按钮是textview)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="30dp">
<LinearLayout
android:orientation="vertical"
android:id="@+id/liner"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="10.0dip"
android:layout_marginTop="5.0dip"
android:layout_marginRight="10.0dip">
<TextView
android:id="@+id/r1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="20.0dip"
android:text="请选择一个或两个标志"
android:textColor="@color/white"
android:textSize="18sp" />
<RelativeLayout
android:id="@+id/r2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40.0sp">
<TextView
android:id="@+id/one"
android:layout_width="98dp"
android:layout_height="98dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="52dp"
android:onClick="onClick"
android:background="@drawable/daiban1" />
<ImageView
android:id="@+id/bingo1"
android:layout_width="44dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="80dp"
android:layout_marginTop="25dp"
android:src="@drawable/dei"/>
<TextView
android:id="@+id/two"
android:layout_width="98dp"
android:layout_height="98dp"
android:layout_alignParentRight="true"
android:layout_marginRight="52dp"
android:onClick="onClick"
android:background="@drawable/yonghu2" />
<ImageView
android:id="@+id/bingo2"
android:layout_width="44dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_marginRight="80dp"
android:layout_marginTop="25dp"
android:src="@drawable/dei"/>
</RelativeLayout>
<TextView
android:id="@+id/wancheng"
android:layout_marginTop="70dp"
android:layout_width="234dp"
android:layout_height="44dp"
android:background="@drawable/fillet_bg"
android:text="确定"
android:textColor="@color/black"
android:textSize="14dp"
android:layout_below="@id/liner"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:gravity="center"
android:onClick="onClick"
android:layout_alignParentBottom="true" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
其中@drawable/fillet_bg是我在drawable里自定义的圆角矩形背景样式,代码如下
后面用到的fillet_bg2是改了背景颜色边框颜色的fillet_bg,代码没有什么区别
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<shape android:shape="rectangle">
<solid android:color="@color/gray" />
<corners android:radius="10.0dip" />
<padding android:left="2.0dip" android:top="2.0dip" android:right="2.0dip" android:bottom="2.0dip" />
</shape>
</item>
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@color/gray" />
<corners android:radius="10.0dip" />
</shape>
</item>
</selector>
之后是MainActivity逻辑代码
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private ImageView bingo1;
private ImageView bingo2;
private TextView one;
private TextView two;
private TextView wancheng;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bingo1 = (ImageView)findViewById(R.id.bingo1);
bingo2 = (ImageView)findViewById(R.id.bingo2);
bingo1.setVisibility(View.GONE);
bingo2.setVisibility(View.GONE);//一开始设置图片不可见
one = (TextView)findViewById(R.id.one);
two = (TextView)findViewById(R.id.two);
wancheng = (TextView)findViewById(R.id.wancheng);
// dog.setOnClickListener(this);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.hide();
}
}
//点击事件监听
public void onClick(View v) {
switch (v.getId()) {
case R.id.one:
if ( bingo1.getVisibility() == View.GONE ){
//当点击时对购标志由不可见变为可见
bingo1.setVisibility(View.VISIBLE);
break;
}
else
bingo1.setVisibility(View.GONE);
break;
case R.id.two:
if ( bingo2.getVisibility() == View.GONE ){
bingo2.setVisibility(View.VISIBLE);
break;
}
else
bingo2.setVisibility(View.GONE);
break;
case R.id.wancheng:
//当至少有一个对勾标选时可以实现跳转
if(bingo1.getVisibility() == View.VISIBLE || bingo2.getVisibility() == View.VISIBLE){
Intent intent = new Intent(MainActivity.this, Pet_information.class);
startActivity(intent);
break;
}else{
//当没有对勾标选时toast提示选择
Toast.makeText(getApplicationContext(), "请点击选择至少一项", Toast.LENGTH_LONG).show();
break;
}
}
//当有标选时改变确定按钮的背景颜色和字体颜色
if(bingo1.getVisibility() == View.VISIBLE || bingo2.getVisibility() == View.VISIBLE){
wancheng.setTextColor(Color.WHITE);
wancheng.setBackgroundResource(R.drawable.fillet_bg2);//当背景是引用图片时为此,单纯颜色时用R.color
}
else{
wancheng.setTextColor(Color.BLACK);
wancheng.setBackgroundResource(R.drawable.fillet_bg);
}
}
}