我创造TableLayout.在TableLayout我创建动态行并在表行上添加按钮数.OnTouchListener应用于按钮以放大和缩小.当我移动我的手指慢慢放大并缩小工作正常但当我的手指移动快速缩放功能不能正常工作.
我的源代码是.
请建议我如何改进我的代码,当它以正常的方式工作
package com.exa;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.FloatMath;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class DynamictablerowActivity extends Activity implements OnTouchListener,OnClickListener{
/** Called when the activity is first created. */
Button textView[][]= new Button[39][40];
TableRow tableRow;
TableLayout tableLayout;
ScrollView sc;
float c=10;
RelativeLayout re;
float olddistanc;
static …Run Code Online (Sandbox Code Playgroud) http://img683.imageshack.us/img683/645/weatherscreenmockupoutl.png
我问自己什么是编码这种布局的最佳方法.基本上我只需要知道如何获得具有相等宽度的七列.
提前致谢!

我设法使用设计布局TableLayout.android:layout_span帮助我.
问题是我需要Column1和Column2之间的一些差距.无论哪种方式Padding / Margin
我不喜欢这个任务的程序.必须有一个简单的方法来做到这一点.
可以使用xml设置吗?
更新:我试图设置列子的填充它没有均匀地对齐列.
TableLayout 在每一行都有一个TextView和EditText.什么时候EditText有一个多行,TableRow包装它但是什么时候TextEdit它不会...
简单的布局:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:shrinkColumns="*" >
<TableRow>
<TextView
android:id="@+id/textView1"
android:text="Lorem ipsum dolor sit amet, consectetur" />
<EditText
android:id="@+id/textView2"
android:text="Foo" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/textView3"
android:text="Foo" />
<EditText
android:id="@+id/textView4"
android:text="Lorem ipsum dolor sit amet, consectetur" />
</TableRow>
</TableLayout>
Run Code Online (Sandbox Code Playgroud)
呈现:
但是当两个控件都是时TextEdit,它会正确呈现.
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:shrinkColumns="*" >
<TableRow>
<TextView
android:id="@+id/textView1"
android:text="Lorem ipsum dolor sit amet, consectetur" />
<TextView
android:id="@+id/textView2"
android:text="Foo" /> …Run Code Online (Sandbox Code Playgroud) 我有一个 TableLayout,我以编程方式添加行,我试图以编程方式设置行中包含的元素的“权重”。
我试图通过weightSum在 TableRow 上设置并使用“LayoutParams”的最后一个参数设置列的“权重”来做到这一点,但什么也没出现;相反,如果我给元素一个固定的宽度,代码运行良好。
这是我的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TableLayout
android:id="@+id/sample"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center" >
</TableLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这是代码:
public class HomeFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.home, null);
}
@Override
public void onStart() {
super.onStart();
TableLayout tl = (TableLayout)getActivity().findViewById(R.id.sample);
TableRow tr = new TableRow(getActivity());
tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
tr.setGravity(Gravity.CENTER);
tr.setWeightSum(1f);
TableRow.LayoutParams lp;
TextView tv1 = new TextView(getActivity());
lp = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, 0.6f);
tv1.setText("AAA");
tv1.setLayoutParams(lp); …Run Code Online (Sandbox Code Playgroud) 我有如下布局:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SettingsActivity" >
<TableRow
...
</TableRow>
<TableRow
...
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Temperature:" />
<SeekBar
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</TableRow>
Run Code Online (Sandbox Code Playgroud)
在第三个中TableRow,TextView和SeekBar平分空间。我希望 theTextView仅与其中的文本一样宽,并且SeekBar应该填充其余空间。我试过摆弄重力、宽度和重量。获得这种行为的最佳方法是什么?
我正在为 android 设计一个基本的井字游戏,作为我的“Hello World”项目。我想要一个 3x3 表格,其中所有单元格都是正方形。
如果其中的任何单元格中没有任何内容,我所做的方式会使列缩小。我正在尝试使用 GridLayout 中的 9 个 TextView。
我欢迎所有建议来做到这一点。
我的方式看起来像这样 -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/LayoutStyle"
tools:context=".GameBoard">
<GridLayout
style="@style/GameBoardGrid"
android:id="@+id/gridTitle">
<TextView
android:id="@+id/tile00"
style="@style/GameTile"
android:layout_column="0"
android:layout_row="0"
android:text=""/>
<TextView
android:id="@+id/tile01"
style="@style/GameTile"
android:layout_column="1"
android:layout_row="0"
android:text="X"/>
<TextView
android:id="@+id/tile02"
style="@style/GameTile"
android:layout_column="2"
android:layout_row="0"
android:text="O"/>
<TextView
android:id="@+id/tile10"
style="@style/GameTile"
android:layout_column="0"
android:layout_row="1"
android:text=""/>
<TextView
android:id="@+id/tile11"
style="@style/GameTile"
android:layout_column="1"
android:layout_row="1"
android:text="O"/>
<TextView
android:id="@+id/tile12"
style="@style/GameTile"
android:layout_column="2"
android:layout_row="1"
android:text="X"/>
<TextView
android:id="@+id/tile20"
style="@style/GameTile"
android:layout_column="0"
android:layout_row="2"
android:text=""/>
<TextView
android:id="@+id/tile21"
style="@style/GameTile"
android:layout_column="1"
android:layout_row="2"
android:text="X"/>
<TextView
android:id="@+id/tile22"
style="@style/GameTile"
android:layout_column="2"
android:layout_row="2"
android:text="O"/>
</GridLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
其中,GameTile …
android textview android-ui android-tablelayout android-gridlayout
我制作了一个 tablayout 选项卡,它具有选项卡的自定义布局,有时我希望更改这些选项卡的标题。但我没有得到正确的方法,请帮助我。
我的custom_tab.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/titttle"
android:textStyle="bold"
android:text="MYTITLE"
android:paddingLeft="10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/count"
android:textStyle="bold"
android:text="1"
android:paddingLeft="10dp"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
并在MainActivity.java 中
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setCustomView(R.layout.tab_custom_view);
tabLayout.getTabAt(1).setCustomView(R.layout.tab_custom_view);
TextView textView = (TextView)tabLayout.getChildAt(1).getRootView().findViewById(R.id.titttle);
textView.setText("New Title");
Run Code Online (Sandbox Code Playgroud)
这里
TextView textView = (TextView)tabLayout.getChildAt(1).getRootView().findViewById(R.id.titttle);
textView.setText("New Title");
Run Code Online (Sandbox Code Playgroud)
不工作,帮我更新自定义选项卡的文本视图。
android-fragments android-activity android-tablelayout android-tabs android-design-library
我为我的活动设置了一个巨大的布局,我使用setContentView(). 在该布局中,我有一个TableLayout(tableLayout在我的活动中命名)要填充。该 TableLayout 的行是布局文件中的 customViews (我们称之为该文件tablerow_layout.xml)。在这个布局中,我有一些 TextViews 和 ImageView。我想要做的是在创建行时以编程方式更改 TextView 的内容。这是我的代码:
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View newRow = layoutInflater.inflate(R.layout.tablerow_layout, null, false);
TextView name = (TextView) newRow. findViewById(R.id.tablerow_name);
name.setText("THIS LINE");
tableLayout.addView(newRow);
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我尝试更改 TextView 的内容时,我的应用程序崩溃了。我知道我可以使用 ListView 来做到这一点,但我通常只有少量行,并且为 ListView 创建另一个适配器的开销非常大。
作为 @???????K 建议我也尝试过 newRow.findViewById(...) 而不是 findViewById(...) 没有任何区别
我在我的活动布局之一中使用 TableLayout。但是当我尝试在 Lollipop 上运行相同的活动时,它崩溃了。
它适用于棉花糖和牛轧糖。
当我在删除 TableLayout(ONLY) 后尝试运行它时,它在 Lollipop 中也运行良好。
我尝试删除活动中的所有 java 代码,它有同样的问题。
我的崩溃报告
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.sovereignconsult.region.viand, PID: 19434 java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getVisibility()' on a null object reference at android.widget.LinearLayout.forceUniformHeight(LinearLayout.java:1380) at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1368) at android.widget.TableRow.onMeasure(TableRow.java:114) at android.view.View .measure(View.java:17826) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5653) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) at android。widget.TableLayout.measureChildBeforeLayout(TableLayout.java:464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) at android.widget.TableLayout.measureVertical(TableLayout.java:476) at android.widget.TableLayout.onMeasure (TableLayout.java:439) at android.view.View.measure(View.java:17826) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java: 464) 在 android.view.View.measure(View.java:17826) 在 android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1269) 在 android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 在 android.widget.ScrollView.onMeasure(ScrollView.java:338) 在 android.view.View.measure(View.java:17826) 在 android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728) 在 android。 widget.RelativeLayout.onMeasure(RelativeLayout.java:464) at …