单击ScrollLayout内的线性布局内的TextView

时间:2017-03-10 09:36:10

标签: android layout

以下代码为我的login_activity xml:

<?xml version="1.0" encoding="utf-8"?>

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorBackgroundLogin"
    android:clipToPadding="false"
    android:fillViewport="false">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linear_layout"
        android:orientation="vertical">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"
            android:paddingTop="20dp"

            android:paddingBottom="20dp">
            <ImageView
                android:layout_width="match_parent"
                android:layout_height="150dp"
                android:src="@drawable/login"
                tools:ignore="ContentDescription"/>
        </RelativeLayout>

        <EditText
            android:layout_marginTop="20dp"
            android:layout_marginRight="30dp"
            android:layout_marginLeft="30dp"

            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textEmailAddress"
            android:id="@+id/email_edit_text"

            android:hint="@string/email_address_string" />

        <EditText
            android:layout_marginTop="20dp"
            android:layout_marginRight="30dp"
            android:layout_marginLeft="30dp"

            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="numberPassword"
            android:id="@+id/password_edit_text"

            android:hint="@string/password_string" />

        <Button
            android:layout_width="match_parent"
            android:textAllCaps="true"
            android:text="@string/login_string"
            android:background="@drawable/button_style"
            android:layout_marginTop="20dp"
            android:layout_marginRight="50dp"
            android:layout_marginLeft="50dp"
            android:textColor="#fff"
            android:layout_gravity="center_horizontal"

            android:layout_height="wrap_content"
            android:id="@+id/login_button" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/colorPrimaryDark"
            android:text="@string/need_an_account"
            android:layout_marginTop="20dp"
            android:textStyle="italic"

            android:layout_gravity="center_horizontal"
            android:id="@+id/need_an_account" />
    </LinearLayout>

</ScrollView>

我想点击TextView id = need_an_account,如下所示:

public class LoginActivity extends Activity implements View.OnClickListener{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_login);


}


@Override
public void onClick(View v) {
    switch (v.getId())
    {
        case R.id.need_an_account:
            // some code
            break;
    }
}
}

请注意,我不想使用findViewById()方法 但是onClick不工作我怎么能解决这个问题?

3 个答案:

答案 0 :(得分:1)

在oncreate中添加此内容,

    TextView need_an_account = (TextView) findViewById(R.id.need_an_account);
    need_an_account.setOnClickListener(this);

答案 1 :(得分:1)

如果您不想使用OnClickListener,可以选择其他方式 -

<TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textColor="@color/colorPrimaryDark"
  android:text="@string/need_an_account"
  android:layout_marginTop="20dp"
  android:textStyle="italic"
  android:onClick="myTextViewMethod"
  android:layout_gravity="center_horizontal"
  android:id="@+id/need_an_account" />

现在在myTextViewMethod

中写下Activity
public void myTextViewMethod(View v) {
   // Do your stuff here...
}

另外一点,无需实施OnClickListener,Android将在后台执行此操作。

如果您想使用界面View.OnClickListener
简单,设置need_an_account.setOnClickListener(this);

答案 2 :(得分:0)

您可以将OnClick添加到xml中以避免使用findViewById:

<template>
<div>
    {{ seconds }}
</div>
</template>


<script>
import Vue from 'vue';
export default {

props: {
    date: {
        type: Number,
        coerce: str => Math.trunc(Date.parse(str) / 1000)
    },
},
data() {
    return {
        now: Math.trunc((new Date()).getTime() / 1000)
    }
},
ready() {
    window.setInterval(() => {
        this.now = Math.trunc((new Date()).getTime() / 1000);
    },1000);


},
computed: {
    seconds() {
        return (this.date - this.now) % 60;
    },
    minutes() {
        return Math.trunc((this.date - this.now) / 60) % 60;
    },
    hours() {
        return Math.trunc((this.date - this.now) / 60 / 60) % 24;
    },
    days() {
        return Math.trunc((this.date - this.now) / 60 / 60 / 24);
    },
},
}
</script>

然后在活动中将您的函数写为:

<TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textColor="@color/colorPrimaryDark"
                    android:text="@string/need_an_account"
                    android:layout_marginTop="20dp"
                    android:clickable="true"
                    android:textStyle="italic"
                    android:onClick="textViewClick"
                    android:layout_gravity="center_horizontal"
                    android:id="@+id/need_an_account" />

如果您不想以编程方式定义TextView,则无需实现OnClickListener。记得将TextView设置为可点击并且为了真实性我还将背景设置为?selectableItemBackground,以便用户知道可以单击TextView