4

我对android很痛心,我碰到了墙壁。接收长按/点击android中的线性布局?

我试图得到一个线性布局,功能更像一个按钮,与新闻界和长按不同的动作 - 之所以被这样我就可以对每一个“按键” 2个不同格式的文本标签。沿着线的东西:

------------------------- 
|   2nd   | <- Label for long press (regular/smaller type) 
|   =   | <- Label for regular press (bold/larger type) 
------------------------- 

我发现解释了如何收到的线性布局的常规点击的帖子(我用的onClick在布局XML属性)。但是我长时间没有运气。我试图为Aleksander Gralak的答案中描述的xml定义一个新的onLongClick属性:Long press definition at XML layout, like android:onClick does。但没有这样的运气 - 它看起来像是用于文本视图,我试图将其更改为线性布局,但失败惨败。

这里是有问题的对象:Main.xml

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:clickable="true" 
    android:focusable="true" 
    android:background="@drawable/darkgrey_button" 
    android:onClick="equals" android:longClickable="true" android:id="equalsbutton" 
    android:focusableInTouchMode="false"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="2nd" 
     android:id="@+id/textView" 
     android:duplicateParentState="true"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=" = " 
     android:id="@+id/textView1" 
     android:duplicateParentState="true"/> 
</LinearLayout> 

而且Main.java

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

public void equals(View view) { 
    Context context = getApplicationContext(); 
    CharSequence text = "Hello toast!"; 
    int duration = Toast.LENGTH_SHORT; 

    Toast toast = Toast.makeText(context, text, duration); 
    toast.show(); 
} 

回答

5

添加id到您的布局。

<LinearLayout 
    android:id="@+id/my_button_layout" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    … > 

在你Main.java

获取到您的LinearLayout参考,并设定OnLongClickListener。这里

LinearLayout buttonLayout = (LinearLayout) findViewById(R.id.my_button_layout); 
… 
buttonLayout.setOnLongClickListener(new OnLongClickListener() { 

    @Override 
    public boolean onLongClick(View v) { 
      Toast.makeText(Main.this, "Long click!", Toast.LENGTH_SHORT).show(); 
      return true; 
    } 

}); 
+0

总体思路为我工作。我能够在WebView对象上设置监听器 – gnB

+0

完美,简单的代码,谢谢! – cubycode