2017-02-25 43 views
0
//custom_dialog.xml 

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_marginTop="20dp" 
    > 

    <TextView 
     android:id="@+id/first_box" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="45dp" 
     android:layout_marginLeft="10dp" 
     android:background="@color/action_bar_color_first" 
     /> 

    <TextView 
     android:id="@+id/second_box" 
     android:layout_toRightOf="@id/first_box" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="45dp" 
     android:background="@color/action_bar_color_second" 
     android:layout_marginLeft="10dp"/> 

    <TextView 
     android:id="@+id/third_box" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="45dp" 
     android:layout_below="@+id/first_box" 
     android:layout_marginTop="10dp" 
     android:layout_marginLeft="10dp" 
     android:background="@color/action_bar_color_third"/> 

    <TextView 
     android:id="@+id/fourth_box" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="45dp" 
     android:layout_toRightOf="@+id/third_box" 
     android:layout_below="@+id/second_box" 
     android:background="@color/action_bar_color_fourth" 
     android:layout_marginTop="10dp" 
     android:layout_marginLeft="10dp"/> 

    <TextView 
     android:id="@+id/fifth_box" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="45dp" 
     android:layout_toRightOf="@+id/second_box" 
     android:background="@color/action_bar_color_fifth" 
     android:layout_marginLeft="10dp"/> 

    <TextView 
     android:id="@+id/sixth_box" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="45dp" 
     android:layout_toRightOf="@+id/fourth_box" 
     android:layout_below="@+id/fifth_box" 
     android:background="@color/action_bar_color_sixth" 
     android:layout_marginTop="10dp" 
     android:layout_marginLeft="10dp"/> 


</RelativeLayout> 

//CustomDialog.java 
package com.example.android.myapplication; 

import android.app.Dialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.support.v4.app.DialogFragment; 
import android.support.v7.app.AlertDialog; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.TextView; 

/** 
* Created by Home on 2/24/2017. 
*/ 
public class CustomDialog extends DialogFragment { 

    LayoutInflater inflater; 
    View v; 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     inflater = getActivity().getLayoutInflater(); 
     v = inflater.inflate(R.layout.custom_dialog, null); 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setView(v); 

     return builder.create(); 

    } 

} 

我要的是有一个听众在所有的对话框中的文本视图,以便每当用户按下这些观点的任何一个的TextView的颜色将被暗示。就像在笔记应用程序中一样,您可以选择主题颜色。如何在自定义布局添加setOnClickListener每个TextView的

我无法做到这一点。请建议我以正确的方式做到这一点。

+0

你想改变点击TextView的整个应用主题? – tahsinRupam

回答

0

,你可以简单的设置点击收听这样的..

((TextView)v.findViewById(R.id.first_box)).setOnClick.... 

等..

0

我宁愿为每个视图创建一个新的监听器。大多数情况下,我为此创建匿名类,但每隔一段时间一个命名类都是适当的,例如,当多个视图具有相似的行为时。这里是一个例子:

public class MainActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstance) { 
     setContentView(R.layout.custom_dialog); 
     TextView first = findViewById(R.id.first_box); 
     first.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       // logic goes here 
      } 
     }); 
    } 
} 

冲洗并重复每个视图。

请注意,我在示例代码中使用了一个Activity,但同样的原理适用于Fragments。

此外,我建议你使用更多的描述性名称而不仅仅是数字。如果在名称中使用数字是有意义的,例如在计算器应用程序中,那么您应该在代码中使用一系列视图。您甚至可以更进一步,以编程方式创建视图以利用for循环。

0

既然你已经膨胀的自定义对话框,请按照下列步骤

1)获取到每个TextView的参考。

2)对于每个视图

3)变更主题被点击时,它创建一个监听。

// Initialize First Text View 
TextView firstBoxTextView = (TextView) v.findViewById(R.id.first_box); 
// Set click listener for the First Text View 
firstBoxTextView.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // Change the theme 
     } 
    }); 

对于文本视图的其余部分,请执行此操作。

0

你的代码应该看起来像这样, 进行必要的更改。

public class CustomDialog extends DialogFragment { 
LayoutInflater inflater; 
View v; 
TextView text1; 
TextView text2; 
TextView text3; 
TextView text4; 
TextView text5; 
TextView text6; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_menu); 
    addListenerOnTextView(); 

} 

@NonNull 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    inflater = getActivity().getLayoutInflater(); 
    v = inflater.inflate(R.layout.custom_dialog, null); 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setView(v); 

    return builder.create(); 
} 



public void addListenerOnTextView() { 

    final Context context = this; 

    text1 = (TextView) findViewById(R.id.first_box); 

    text1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      //Your code for what you want to do goes here 
      finish(); 
     } 

    }); 

} 

} 

重复的public void addListenerOnTextView() {构造文本2文本6

+0

这个activity_menu.xml文件在哪里 –

+0

你的onCreate方法使用了什么布局视图?...将activity_menu.xml更改为你的。如果它仍然不清楚让我知道 – Kennedy

相关问题