2017-08-11 22 views
0

增加这是我的看法的EditText宽度不能在运行时

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:orientation="horizontal" 
     android:elevation="4dp" 
     android:background="@android:color/white"> 



     <EditText 
      android:layout_width="220dp" 
      android:id="@+id/defaultfragmentquicktask" 
      android:layout_height="match_parent" 
      android:hint="Quick Task" 
      android:layout_marginLeft="5dp" 
      android:layout_gravity="bottom" 
      android:background="@android:color/white"/> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@mipmap/voicerecognition" 
      android:id="@+id/catalogactivityvoicerecognition" 
      android:background="@android:color/white" 
      android:layout_gravity="bottom" 
      /> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/defaultfragmentcamera" 
      android:src="@mipmap/camera" 
      android:background="@android:color/white" 
      android:layout_gravity="bottom" 
      /> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/defaultfragmentdrawingbrush" 
      android:background="@android:color/white" 
      android:src="@mipmap/drawingbrush" 
      android:layout_gravity="bottom" 
      /> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/defaultfragmentsavebutton" 
      android:background="@android:color/white" 
      android:visibility="gone" 
      android:src="@mipmap/defaulfragmentsave" 
      android:layout_gravity="right" 
      /> 

    </LinearLayout> 

当EditText上获得焦点我设置摄像头,语音识别和drawingbrush图像的公开程度到了和保存图像按钮的公开程度,以visible.I要搬家保存按钮到最右边,但它并没有移动,我知道它可以使用RelativeLayout来完成,但我不想这样做,所以我增加了编辑文本的宽度,当它获得焦点时。 我用以下来增加它的宽度,但没有任何工作 edittext.getLayoutParams()。width = 32; edittext.setWidth(32);和edittext.setEms(50); 请帮我使用LinearLayout将savebutton移动到最右端,我已经尝试了gravity =“right”,它不起作用,或者让我知道如何在运行时增加edittext宽度?

View.OnFocusChangeListener onFocusChangeListener = new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if (hasFocus) { 
       voiceRecognitionButton.setVisibility(View.GONE); 
       camerButton.setVisibility(View.GONE); 
       drawingbrush.setVisibility(View.GONE); 
       save.setVisibility(View.VISIBLE); 
       quickTaskEditText.setWidth(330); 
      } else { 
       voiceRecognitionButton.setVisibility(View.VISIBLE); 
       camerButton.setVisibility(View.VISIBLE); 
       drawingbrush.setVisibility(View.VISIBLE); 
       save.setVisibility(View.GONE); 
       quickTaskEditText.setWidth(220); 
      } 
     } 
    }; 

inOnCreateView我的片段

quickTaskEditText = (EditText) view.findViewById(R.id.defaultfragmentquicktask); 
quickTaskEditText.setOnFocusChangeListener(onFocusChangeListener); 
+1

显示你在哪里更新您的EditText的宽度的代码。目前它的硬编码为220dp – Rahul

+0

我已经添加了代码,请看看 – Cycle

回答

0

您可以通过使用下面的代码设置宽度: final LayoutParams lparams = new LayoutParams(your width, your height); // Width , height edittext.setLayoutParams(lparams); return edittext; 如果你希望你的编辑文本移动到最右边,你可以添加一个规则 ` `` alignParentRight = true;

```

希望这有助于

+0

alignParentRight规则只适用于RelativeLayout。 – Rahul

+0

我在布局文件本身创建edittext,而不是在运行时。我只是想改变其焦点的宽度,如果我使用最终的LayoutParams lparams =新的LayoutParams(你的宽度,你的身高); // Width,height edittext.setLayoutParams(lparams);我的应用程序崩溃 – Cycle

0

你要回申请PARAMS到您的视图。

LayoutParams param = yourView.getLayoutParams(); // Get existing params 
param.width = 330; 
yourView.setLayoutParams(param); // Apply updated params 
+0

试过了。没有工作。textView的宽度保持不变 – Cycle

+0

还有一件事你必须注意的是,你是从你的xml设置dp的宽度,如220dp,但是从java代码设置的像素值为 – Rahul

+0

如何从java代码设置它在dp – Cycle

0

在如果(hasFocus)我设置

voiceRecognitionButton.setVisibility(View.INVISIBLE); 
       camerButton.setVisibility(View.INVISIBLE); 

历程instaed使保存图像按钮出现在最右边